使用serilog在多个项目中使用相同的日志文件

时间:2019-03-19 05:32:23

标签: c# serilog

我有一个Logger.cs类:

public Logger(string logtype=null)
        {
            _logtype = logtype;
            LogEventLevel level = LogEventLevel.Warning;
            if (File.Exists(configPath))
            {
                XDocument xdoc = XDocument.Load(configPath);
                string val = xdoc.Descendants("logEnabled").First().Value;
                // if(clientConfig.LogEnabled == true)
                if (val == "true")
                {
                    level = LogEventLevel.Debug;

                }
                else if (val == "false")
                {
                    level = LogEventLevel.Warning;
                }
            }
            else
            {
                level = LogEventLevel.Warning;
            }
           _logger = new LoggerConfiguration()
                        .MinimumLevel.Debug()
                         .WriteTo.File(_filepath, level)
                         .CreateLogger();

        }

此记录器类在解决方案中的多个项目中使用。如下图所示:

    Class A {
     Logger _logger = new Logger("A");
    }

Class A1 {
     Logger _logger = new Logger("A");
    }

Class B {
     Logger _logger = new Logger("B");
    }

Class B1 {
     Logger _logger = new Logger("A");
    }

使用上面的代码。现在,我只能看到第一个日志记录被写入日志文件。 A类和A1类使用相同的日志文件“ A”,当我的程序执行时,我只能看到A类日志记录出现在日志中,而A1类日志记录消息却没有。 与B级和B1级相同,只有B级消息可见。

在解决方案中如何在多个项目中使用相同的日志文件?

1 个答案:

答案 0 :(得分:1)

您将需要启用多进程共享日志文件,将shared设置为true

_logger = new LoggerConfiguration()
                .MinimumLevel.Debug()
                .WriteTo.File(_filepath, level, shared: true)
                .CreateLogger();

有关更多信息,请检查Shared log files