【问题标题】:Logging framework for .NET that supports multiple applications writing to the the same rolling log file?.NET 的日志框架,支持多个应用程序写入同一个滚动日志文件?
【发布时间】:2012-05-03 15:40:39
【问题描述】:

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

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

但我了解到,如果来自一个实例的日志消息导致翻转,而另一个实例正在尝试写入同一文件,则可能会出现问题。

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

【问题讨论】:

    标签: .net logging


    【解决方案1】:

    试试&lt;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(....);
            }
        }
    }
    

    【讨论】:

    • 来自FAQ:“RollingFileAppender 在滚动文件时完全忽略了锁定模型,滚动文件根本不兼容这种情况。”
    猜你喜欢
    • 2012-12-30
    • 2019-07-27
    • 1970-01-01
    • 2021-07-23
    • 2014-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-27
    相关资源
    最近更新 更多