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.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.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(); } }