【问题标题】:How to use ExtendedLog4netLogger.cs to set logfile path for appender at runtime?如何在运行时使用 ExtendedLog4netLogger.cs 为 appender 设置日志文件路径?
【发布时间】:2013-05-02 16:28:11
【问题描述】:

我想弄清楚如何使用ExtendedLog4NetLogger.cs 在运行时动态更改日志文件路径或使用 LoggingFacility?

这应该类似于像这样直接使用log4net:

log4net.GlobalContext.Properties["LogName"] = logName; 

如果我像这样注册 log4net 集成,我将如何访问 ExtendedLogger:

container.AddFacility(f => f.UseLog4Net());

更新:我使用以下代码注册扩展记录器

container.AddFacility<LoggingFacility>(LoggerImplementation.ExtendedLog4net).WithConfig(configFile).ToLog(Lo‌gger)); 

我没有遇到运行时异常,记录器不是空实例,但我没有看到使用全局属性创建的日志文件,我还为 appender 设置了配置值:

如果我只是将配置文件中的文件属性设置为完整路径,它确实可以工作。我想知道它是否不起作用,因为配置是在设置全局变量之前完成的。

【问题讨论】:

    标签: log4net castle-windsor castle


    【解决方案1】:
    extendedlogger.GlobalProperties["logName"] = logName;
    

    要启用扩展记录器,您需要执行以下操作:

    container.AddFacility<LoggingFacility>(f => f.LogUsing(LoggerImplementation.ExtendedLog4net));
    

    【讨论】:

    • 感谢 Krzysztof,我更新了我的问题,因为我不确定如何使用我在 Windsor 文档中使用的 log4net 集成注册来访问此类。
    • 这给我带来了其他问题,如何在注册时传递配置文件路径并使用命名记录器目前我这样做:container.AddFacility(f => f.UseLog4Net (configPath).ToLog(namedLogger));
    • 我会试试这个,看看它是否有效:container.AddFacility(f => f.LogUsing(LoggerImplementation.ExtendedLog4net).WithConfig(configPath).ToLog(namedLogger));跨度>
    • 虽然我还是不明白如何访问extendedLogger来做到这一点:extendedlogger.GlobalProperties["logName"] = logName;
    • 是的,我迷路了,我不知道如何解析扩展记录器以添加全局属性。
    【解决方案2】:

    1.如果我像这样注册 log4net 集成,我将如何访问 ExtendedLogger:

    使用依赖注入,您可以在需要的地方期待 IExtendedLogger 对象。

    2。我想知道它是否不起作用,因为配置是在设置全局变量之前完成的。

    没错。设置属性后需要重新配置 log4net。

    这是一个例子:

    using Castle.Core.Logging;
    using log4net.Config;
    
    class MyClass {
        private readonly IExtendedLogger _extendedLogger;
    
        public MyClass(IExtendedLogger extendedLogger) {
            _extendedLogger = extendedLogger;
        }
    
        public void MyFunction() {
            _extendedlogger.GlobalProperties["logName"] = logName;
            XmlConfigurator.Configure();
            _extendedlogger.Error("my error message");
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-24
      • 2012-08-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多