80 lines
2.8 KiB
C#
80 lines
2.8 KiB
C#
|
using DispenserCommon.LogUtils;
|
|||
|
using DispenserCore.Service;
|
|||
|
using Serilog;
|
|||
|
using Serilog.Core;
|
|||
|
using Serilog.Events;
|
|||
|
using Serilog.Exceptions;
|
|||
|
|
|||
|
namespace DispenserCommon.LogConfig;
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 日志配置类
|
|||
|
/// </summary>
|
|||
|
public class LogConfiguration
|
|||
|
{
|
|||
|
private static LogParamsService _logParamsService = new();
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 获取日志配置对象
|
|||
|
/// </summary>
|
|||
|
/// <returns></returns>
|
|||
|
public static Logger GetLogger()
|
|||
|
{
|
|||
|
var logParams = _logParamsService.GetLogParams();
|
|||
|
|
|||
|
// 日志输出目录
|
|||
|
var basePath = logParams!.Path ?? AppDomain.CurrentDomain.BaseDirectory;
|
|||
|
|
|||
|
// 适配最小日志级别
|
|||
|
Enum.TryParse(logParams.Level, true, out LogEventLevel miniLevel);
|
|||
|
|
|||
|
return new LoggerConfiguration()
|
|||
|
#if DEBUG
|
|||
|
// 测试环境的话,输出debug级别
|
|||
|
.MinimumLevel.Debug()
|
|||
|
#else
|
|||
|
// 其他环境输出info 级别
|
|||
|
.MinimumLevel.Information()
|
|||
|
#endif
|
|||
|
.MinimumLevel.Override("Microsoft", miniLevel)
|
|||
|
.Enrich.FromLogContext()
|
|||
|
.Enrich.WithExceptionDetails()
|
|||
|
.WriteTo.Logger(
|
|||
|
l =>
|
|||
|
l.Filter.ByIncludingOnly(e => e.Level == LogEventLevel.Debug)
|
|||
|
.WriteTo.File(
|
|||
|
Path.Combine(basePath, "logs", "debug", "debug-.log"),
|
|||
|
rollingInterval: RollingInterval.Hour,
|
|||
|
retainedFileCountLimit: 24
|
|||
|
)
|
|||
|
)
|
|||
|
.WriteTo.Logger(
|
|||
|
l => l.Filter.ByIncludingOnly(e => e.Level == LogEventLevel.Information)
|
|||
|
.WriteTo.File(
|
|||
|
Path.Combine(basePath, "logs", "info", "info-.log"),
|
|||
|
rollingInterval: RollingInterval.Hour,
|
|||
|
retainedFileCountLimit: 72
|
|||
|
)
|
|||
|
)
|
|||
|
.WriteTo.Logger(
|
|||
|
l => l.Filter.ByIncludingOnly(e => e.Level == LogEventLevel.Warning)
|
|||
|
.WriteTo.File(
|
|||
|
Path.Combine(basePath, "logs", "warning", "warning-.log"),
|
|||
|
rollingInterval: RollingInterval.Day,
|
|||
|
retainedFileCountLimit: 30
|
|||
|
)
|
|||
|
)
|
|||
|
.WriteTo.Logger(
|
|||
|
l => l.Filter.ByIncludingOnly(e => e.Level == LogEventLevel.Error)
|
|||
|
.WriteTo.File(
|
|||
|
Path.Combine(basePath, "logs", "error", "error-.log"),
|
|||
|
rollingInterval: RollingInterval.Day,
|
|||
|
retainedFileCountLimit: 90
|
|||
|
)
|
|||
|
)
|
|||
|
// 测试环境同步输出到控制台
|
|||
|
.WriteTo.Console()
|
|||
|
.WriteTo.Sink(new DispenserLogSink())
|
|||
|
.CreateLogger();
|
|||
|
}
|
|||
|
}
|