Serilog.Exceptions滚动文件

时间:2017-06-02 20:36:16

标签: c# exception visual-studio-2015 serilog

记录新异常时,会创建一个新文件。

方案: 创建的第一个文件:
登录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 个答案:

答案 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并重复使用它,您可以使用不同的记录器。