我一直在Best way to dynamically set an appender file path中建议使用%property {}动态设置文件名,但文件创建为“(nul).log”下面是代码
log4net.GlobalContext.Properties["service"] = _servicename.ToString();
_flatFileLogger = LogManager.GetLogger("FlatFileLogger");
_flatFileLogger.Debug(logData.ToString());
我已在XML文件中声明为
file type="log4net.Util.PatternString" value="C:\My_Log\%property{service}.log"
非常感谢。
答案 0 :(得分:2)
确保在初始化log4net之前设置属性。
答案 1 :(得分:0)
不要混淆记录器和追加器。大多数人每个类使用一个记录器:这样,您的日志消息可以轻松地与您的类相关联。
另一方面,Appenders与程序的结构方式无关。在您的配置中,您可以告诉哪些记录器应该使用哪些appender。这为您提供了极大的灵活性,如果您在代码中直接使用“appenders”,那么您就不会拥有它。
你有没有其他记录器在你发布之前写一个声明?如果是,那么我会假设文件appender已经初始化(名称中带有 null )。