文件内容 SerilogCustomHandler.cs 1 KB 1279 字符
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Serilog.Core;
using Serilog.Events;

namespace PasteApeart.Handler
{
    /// <summary>
    /// 
    /// </summary>
    public class SerilogCustomHandler : ILogEventSink
    {
        /// <summary>
        /// 
        /// </summary>
        public IServiceProvider ServiceProvider { get; set; }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="serviceProvider"></param>
        public SerilogCustomHandler(IServiceProvider serviceProvider)
        {
            ServiceProvider = serviceProvider;
        }



        /// <summary>
        /// 
        /// </summary>
        /// <param name="logEvent"></param>
        public void Emit(LogEvent logEvent)
        {
            if (ServiceProvider != null)
            {
                var _channel = ServiceProvider.GetRequiredService<ChannelHelper>();
                //Console.WriteLine($"channel is null:{(_channel == null)}!");
                //这里进行比如异常推送等
            }
            //Console.WriteLine("--------- --  ----------- happend error wait to push!" + logEvent.MessageTemplate.ToString());
        }
    }
}
​ ​