2017-06-02 85 views
0

当记录一个新的异常时,将创建一个新文件。Serilog.Exceptions滚动文件

场景: 首先创建的文件:
数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(); 

有没有一种方法,以防止每异常,但每个新的日期正在创建的文件吗?

回答

1

您是否在每次登录时创建一个新的记录器?一般用Serilog我的初始化一次单身日志实例,并在任何地方使用它:

在启动:

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并重新使用它,你可以使用不同的记录器。

+0

我意识到我每次创建一个新实例后,才意识到这种方法。谢谢 –