0

我有一个写入滚动日志文件的控制台应用程序。问题是应用程序可以被多个进程调用,并且有可能同时调用它。应用程序写入一个日志文件。我目前正在研究将 log4net 与 MinimalLock 设置一起使用:

<lockingModel type="log4net.Appender.RollingFileAppender+MinimalLock" />

但我已经读过,如果来自一个实例的日志消息导致翻转,而另一个实例试图写入同一个文件,则可能会出现问题。

是否有另一个框架支持这种行为,或者可能是一个合适的解决方法?

4

1 回答 1

1

尝试<lockingModel type="log4net.Appender.FileAppender+InterProcessLock"

现在下面的代码将是线程安全的,因为您将创建一个记录器静态类来记录信息。

public static class Logger
{
    private static readonly Object obj = new Object();

    private static ILog _appLog = null;
    static Logger()
    {
        XmlConfigurator.Configure();
    }

    public static void Log(string loggername)
    {
        lock (obj)
        {
            _appLog = LogManager.GetLogger(loggername);
            _appLog.Error(....);
        }
    }
}
于 2012-05-03T15:44:39.833 回答