坚持记录实属不易,希望友善多金的码友能够随手点一个赞。
共同创建氛围更加良好的开发者社区!
谢谢~
概述
使用第三方库 Serilog、Serilog.Sinks.File、Serilog.Formatting.Compact 进行创建
步骤
安装第三方库
Log 全局变量
/// <summary>
/// 日志系统
/// </summary>
public ILogger Log { get; private set; }
创建日志实例方法
/// <summary>
/// 独立的日志系统
/// </summary>
/// <returns></returns>
private ILogger buildLogService()
{
var basepath = Path.Combine(获取路径方法, "Log");
var logInstance = new LoggerConfiguration()
//设置最小的输出日志等级为Verbose
.MinimumLevel.Verbose()
.WriteTo.Logger(lc => lc
//这行是合并Fatal和Error级别的日志
.Filter.ByIncludingOnly(v => v.Level == Serilog.Events.LogEventLevel.Error || v.Level == Serilog.Events.LogEventLevel.Fatal)
.WriteTo.File(
Path.Combine(basepath, "error-.txt"),
//outputTemplate: @"{Timestamp:yyyy-MM-dd HH:mm-dd } [{Level:u3}] {Message:lj} {NewLine}",
rollingInterval: RollingInterval.Day,
rollOnFileSizeLimit: true,
encoding: Encoding.UTF8,
retainedFileCountLimit: 20,
fileSizeLimitBytes: 1024 * 2048))
.WriteTo.Logger(lc => lc
.Filter.ByIncludingOnly(v => v.Level == Serilog.Events.LogEventLevel.Information)
.WriteTo.File(
Path.Combine(basepath, "info-.txt"),
//outputTemplate: @"{Timestamp:yyyy-MM-dd HH:mm-dd } [{Level:u3}] {Message:lj} {NewLine}",
rollingInterval: RollingInterval.Day,
rollOnFileSizeLimit: true,
encoding: Encoding.UTF8,
retainedFileCountLimit: 20,
fileSizeLimitBytes: 1024 * 2048))
.WriteTo.Logger(lc => lc
.Filter.ByIncludingOnly(v => v.Level == Serilog.Events.LogEventLevel.Warning)
.WriteTo.File(
Path.Combine(basepath, "warning-.txt"),
//outputTemplate: @"{Timestamp:yyyy-MM-dd HH:mm-dd } [{Level:u3}] {Message:lj} {NewLine}",
rollingInterval: RollingInterval.Day,
rollOnFileSizeLimit: true,
encoding: Encoding.UTF8,
retainedFileCountLimit: 20,
fileSizeLimitBytes: 1024 * 2048))
.WriteTo.Logger(lc => lc
.Filter.ByIncludingOnly(v => v.Level == Serilog.Events.LogEventLevel.Debug)
.WriteTo.File(
Path.Combine(basepath, "debug-.txt"),
//outputTemplate: @"{Timestamp:yyyy-MM-dd HH:mm-dd } [{Level:u3}] {Message:lj} {NewLine}",
rollingInterval: RollingInterval.Day,
rollOnFileSizeLimit: true,
encoding: Encoding.UTF8,
retainedFileCountLimit: 20,
fileSizeLimitBytes: 1024 * 2048))
.WriteTo.Logger(lc => lc
.Filter.ByIncludingOnly(v => v.Level == Serilog.Events.LogEventLevel.Verbose)
.WriteTo.File(
Path.Combine(basepath, "verbose-.txt"),
//outputTemplate: @"{Timestamp:yyyy-MM-dd HH:mm-dd } [{Level:u3}] {Message:lj} {NewLine}",
rollingInterval: RollingInterval.Day,
rollOnFileSizeLimit: true,
encoding: Encoding.UTF8,
retainedFileCountLimit: 20,
fileSizeLimitBytes: 1024 * 2048))
.CreateLogger();
return logInstance;
}
设置日志的最小输出等级
声明赋值后,在创建时的相关片段进行替换
/// <summary>
/// 改变系统Log的日志输出等级
/// </summary>
public LoggingLevelSwitch LogLevelSwith { get; private set; }
//设置最小的日志输出等级
.MinimumLevel.ControlledBy(LogLevelSwith )
测试结果