目录
一 资源
这是Serilog官网
二 上一章回顾
三 需求分析
我们定义了日志接口方法,现在我们需要定义Serilogservice实现接口,并实现其相应接口方法,这里我们是通过封装Serilog本身的Log静态类的日志方法来实现的
四 创建SerilogService服务
1 实现ISerilogService接口
创建Service文件夹,新建Serilogservice类,并实现ISerilogService接口
public class SerilogService : ISerilogService
2 方法具体实现
这里我们具体实现了ISerilogService接口中定义的Info、Warn、Err方法,具体是通过封装Serilog包中Log静态类的Information、Warning、Error方法
五 定义LoggerConfig
在CollectData主程序中,我们调用了SerilogDLL.Config.LoggerConfig.Configure方法,接下来让我们一起去实现。
- 新建Config文件夹
- 其下新建LoggerConfig类
- 声明Serilogservice字段
- 定义Configure()方法
1 声明Serilogservice字段
private static SerilogService _logger;
2 定义Configure()方法
这里我们定义静态Configure方法,并在其中调用LoggerConfiguration方法初始化Logger配置,如下依次是:
- 日志记录的最小等级为Debug
- 反序列化最大深度为3
- 反序列化转化具体格式(这里我是展开电气实体类到每个属性,简单实体默认全部展开,复杂实体必须显示指定,否则按默认策略反序列化出的日志仅包含实体名而无具体属性)
- 控制台接收器配置
- log文件接收器配置
- Json文件接收器配置
这里我们主要讲解控制台接收器配置和log文件接收器配置
public static void Configure()
{
Serilog.Log.Logger = new LoggerConfiguration()
.MinimumLevel.Debug()
.Destructure.ToMaximumDepth(3) // 展开对象至3层深度
.Destructure.ByTransforming<DQData>(dqd => new {
dqd.SlabID,
dqd.L3ID,
dqd.SteelGrade,
dqd.Len,
dqd.Wid,
dqd.Thk,
dqd.EntrySignal,
dqd.TappingSignal,
})
.WriteTo.Console(
theme: AnsiConsoleTheme.Code,
outputTemplate: "[{Timestamp:HH:mm:ss +08:00} {Level:u3}]{SourceContext}{Message:lj}{Properties}{NewLine}{Exception}")
.WriteTo.File(path: "Serilogs/.log",
rollingInterval: RollingInterval.Day,
retainedFileCountLimit: 7,
outputTemplate: "{Timestamp:yyyy-MM-dd HH:mm:ss +08:00} [{Level:u3}]{SourceContext}{Message:lj}{Properties}{NewLine}{Exception}")
//结构化日志支持
.WriteTo.File(path: "Serilogs/.json",
formatter: new CompactJsonFormatter(),
rollingInterval: RollingInterval.Day,
retainedFileCountLimit: 7)
.CreateLogger();
AppDomain.CurrentDomain.UnhandledException += (sender, e) =>
{
_logger.Error((Exception)e.ExceptionObject, "未处理的全局异常");
};
}
六 总结
以上我给大家介绍需求分析。创建Serilogservice服务、定义LoggerConfig类、实现Configure方法等内容。
七 下章预告
下一章我会教大家详细解析Configure方法中反序列化策略和接收器配置。
博主RaymondLeigh:如果您觉得本文为您提供了结局思路或解决了您的实际问题,麻烦您🙏帮忙点赞、收藏、评论、关注一键四连,您的举手之劳将为我写作提供动力源泉!🤞
print('Hello,RaymondLeigh!') # 每日问候,跟大家问好!
🌞精品前端UI设计专栏:MaterialDesign专栏
💾精品数据库专栏:SqlServer专栏 EFCore专栏
💻精品程序开发专栏 VisualStudio专栏
💻精品后端专栏 Scoket专栏 SiemensS7数采
947

被折叠的 条评论
为什么被折叠?



