我想知道如何使用ExtendedLog4NetLogger.cs 在运行时或使用LoggingFacility动态更改日志文件路径?
这应该类似于直接使用log4net:
log4net.GlobalContext.Properties["LogName"] = logName;
如果我注册log4net集成,我将如何访问ExtendedLogger:
container.AddFacility<LoggingFacility>(f => f.UseLog4Net());
更新:我使用以下代码注册扩展记录器
container.AddFacility<LoggingFacility>(LoggerImplementation.ExtendedLog4net).WithConfig(configFile).ToLog(Logger));
我没有得到运行时异常,并且logger不是null实例,但是我没有看到使用全局属性创建的日志文件,我还为appender设置了配置值:
{ {2}}
如果我只是将配置文件中的文件属性设置为完整路径,它确实有效。我想知道它是否无效,因为在设置全局变量之前完成了配置。
答案 0 :(得分:2)
extendedlogger.GlobalProperties["logName"] = logName;
要启用扩展记录器,您需要执行以下操作:
container.AddFacility<LoggingFacility>(f => f.LogUsing(LoggerImplementation.ExtendedLog4net));
答案 1 :(得分:1)
<强> 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");
}
}