C#两个类一个serilog文件

时间:2017-03-31 06:23:45

标签: c# serilog

我有一个问题我有两个类,我想将这两个类写入Serilog文件。

class Program
    {
        static void Main(string[] args)
        {
            Log.Logger = new LoggerConfiguration()
                    .WriteTo.RollingFile(logs\\log.txt)
                    .CreateLogger();
            Log.Information("TEST");
        }
    }
public class data: IData
    {
            Log.Logger = new LoggerConfiguration()
                .WriteTo.RollingFile(logs\\log.txt)
                .CreateLogger();
            Log.Information("_________________________________________________");
            Log.Information("I'm right now in the Class", DateTime.Now);
    }

如果我要写这个,我会创建两个日志对象和日志信息,将写入不同的文件。 所以我的问题是如何只创建一个我可以在两个类中使用的日志对象,并且日志信息只写入一个文件。

2 个答案:

答案 0 :(得分:2)

无需创建新的日志文件。此日志文件已存在,您可以将其附加。

答案 1 :(得分:0)

.net应用程序中有同样的问题。我的解决方案是使用私有静态Logger创建一个类。看起来像这样:

public class ErrorLogRepository
    {
        private static Logger _logger;

        public ErrorLogRepository()
        {
            if(_logger == null)
            {
                _logger = new LoggerConfiguration()
                    .WriteTo.RollingFile(logs\\log.txt)
                    .CreateLogger();
            } 
        }

        public void Log()
        {
            Log.Information("I'm right now in the Class", DateTime.Now);
        }
    }

对于此类,每次您创建该类的实例时,构造函数都会验证以前是否已创建Logger。这样,您将始终对不同的类使用相同的Logger,并且始终将写入同一文件。