32 lines
944 B
C#
32 lines
944 B
C#
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();
|
|
}
|
|
} |