记录新异常时,会创建一个新文件。
方案:
创建的第一个文件:
的登录20170602
根据例外创建的文件:
的登录20170602_001
登录20170602_002
登录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);
}
}
请参阅该类以避免在每个类中编写以下代码:
_logger = new LoggerConfiguration()
.Enrich.WithExceptionDetails()
.WriteTo.Sink(new RollingFileSink(logAccessor.Path,
new JsonFormatter(renderMessage: true), null, null)).CreateLogger();
有没有办法阻止每个例外但每个新日期创建的文件?
答案 0 :(得分:1)
每次登录时都在创建新的记录器吗?通常使用Serilog I初始化单例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
并重复使用它,您可以使用不同的记录器。