Dispenser/DispenserCommon/LogUtils/DispenserLogSink.cs

32 lines
944 B
C#
Raw Permalink Normal View History

2024-08-16 07:20:09 +00:00
using System.Text;
using DispenserCommon.DTO;
using DispenserCommon.Events;
using Serilog.Core;
using Serilog.Events;
namespace DispenserCommon.LogUtils;
public class DispenserLogSink : ILogEventSink
{
public void Emit(LogEvent logEvent)
{
//错误日志,用于弹窗提示
if (IsPopLog(logEvent))
EventBus<LogMessage>.Publish(EventType.PopLog,
new LogMessage(logEvent.RenderMessage(), LogEventLevel.Error));
var sb = new StringBuilder(logEvent.RenderMessage());
if (logEvent.Exception != null)
{
sb.Append(logEvent.Exception.Message);
}
EventBus<LogMessage>.Publish(EventType.RollingLog, new LogMessage(sb.ToString(), logEvent.Level));
}
private bool IsPopLog(LogEvent logEvent)
{
return logEvent.Properties.ContainsKey("IsPop") &&
logEvent.Properties["IsPop"].ToString() == true.ToString();
}
}