Serilog.Exceptions 滚动文件
Serilog.Exceptions Rolling Files
记录新异常时,会创建一个新文件。
场景:
创建的第一个文件:
log-20170602
每个异常创建的文件:
log-20170602_001
log-20170602_002
log-20170602_003
我的代码(C# - Visual Studio 2015 项目):
public class EventLogging
{
private readonly Logger _logger;
public EventLogging(IOptions<LoggingOptions> logOption)
{
var logAccessor = logOption.Value;
_logger = new LoggerConfiguration()
.Enrich.WithExceptionDetails()
.WriteTo.Sink(new RollingFileSink(logAccessor.Path,
new JsonFormatter(renderMessage: true), null, null)).CreateLogger();
}
public void LogError(string message, Exception exception)
{
_logger.Error(exception, message);
}
public void LogWarning(string message, Exception exception)
{
_logger.Warning(exception, message);
}
}
参考class,避免在每个class中写下面的代码:
_logger = new LoggerConfiguration()
.Enrich.WithExceptionDetails()
.WriteTo.Sink(new RollingFileSink(logAccessor.Path,
new JsonFormatter(renderMessage: true), null, null)).CreateLogger();
有没有办法阻止每个例外但每个新日期创建文件?
您是否在每次记录内容时都创建一个新的记录器?通常使用 Serilog 我初始化单例 Log 实例一次并在任何地方使用它:
启动时:
Serilog.Log.Logger = new LoggerConfiguration()
.Enrich.WithExceptionDetails()
.WriteTo.Sink(new RollingFileSink(logAccessor.Path,
new JsonFormatter(renderMessage: true), null, null)).CreateLogger();
以后:
Serilog.Log.Error(exception, message);
对于您的情况,我认为如果您只保留 _logger
的静态实例而不是一遍又一遍地重新创建一个新实例,它将解决您的问题。或者,如果您只保留相同的 RollingFileSink
并重新使用它,您可以使用不同的记录器。
记录新异常时,会创建一个新文件。
场景:
创建的第一个文件:
log-20170602
每个异常创建的文件:
log-20170602_001
log-20170602_002
log-20170602_003
我的代码(C# - Visual Studio 2015 项目):
public class EventLogging
{
private readonly Logger _logger;
public EventLogging(IOptions<LoggingOptions> logOption)
{
var logAccessor = logOption.Value;
_logger = new LoggerConfiguration()
.Enrich.WithExceptionDetails()
.WriteTo.Sink(new RollingFileSink(logAccessor.Path,
new JsonFormatter(renderMessage: true), null, null)).CreateLogger();
}
public void LogError(string message, Exception exception)
{
_logger.Error(exception, message);
}
public void LogWarning(string message, Exception exception)
{
_logger.Warning(exception, message);
}
}
参考class,避免在每个class中写下面的代码:
_logger = new LoggerConfiguration()
.Enrich.WithExceptionDetails()
.WriteTo.Sink(new RollingFileSink(logAccessor.Path,
new JsonFormatter(renderMessage: true), null, null)).CreateLogger();
有没有办法阻止每个例外但每个新日期创建文件?
您是否在每次记录内容时都创建一个新的记录器?通常使用 Serilog 我初始化单例 Log 实例一次并在任何地方使用它:
启动时:
Serilog.Log.Logger = new LoggerConfiguration()
.Enrich.WithExceptionDetails()
.WriteTo.Sink(new RollingFileSink(logAccessor.Path,
new JsonFormatter(renderMessage: true), null, null)).CreateLogger();
以后:
Serilog.Log.Error(exception, message);
对于您的情况,我认为如果您只保留 _logger
的静态实例而不是一遍又一遍地重新创建一个新实例,它将解决您的问题。或者,如果您只保留相同的 RollingFileSink
并重新使用它,您可以使用不同的记录器。