.net Log4Net存储库范围的属性
我正在以编程方式创建我的log4net记录器,方法是加载一个xml文件,并设置全局属性,如.net Log4Net存储库范围的属性,.net,log4net,.net,Log4net,我正在以编程方式创建我的log4net记录器,方法是加载一个xml文件,并设置全局属性,如 <log4net> <root> <!-- level is set programatically <level value="DEBUG" /> --> <appender-ref ref="Log4NetDefaultAppender" /> </root> <appender name="Lo
<log4net>
<root>
<!-- level is set programatically <level value="DEBUG" /> -->
<appender-ref ref="Log4NetDefaultAppender" />
</root>
<appender name="Log4NetDefaultAppender" type="log4net.Appender.RollingFileAppender" >
<param name="File" value="%property{workingDirectory}\..\\Logs\\%property{processName}.log" type="log4net.Util.PatternString"/>
我这样做是因为我有大约100个进程需要登录到单个文件——我不想维护100个配置文件。动态创建配置很好,但是
在某些情况下,我需要登录到辅助日志文件。我想使用相同的代码和配置,但打开一个单独的日志文件
由于log4net的全局性,我遇到了一些问题。只需创建一个新实例即可关闭第一个日志文件,然后继续在第二个日志文件中写入。我假设这是因为XmlConfigurator.Configure()是全局的
我已经尝试创建一个单独的存储库
ILoggerRepository logRepository = LogManager.CreateRepository(processName);
但这仍然存在全局属性的问题(我也在输出中使用这些属性)
我尝试在存储库上设置属性,但只使用全局属性
logRepository.Properties["sessionid"] = Guid.NewGuid().ToString();
我还使用%property{sessionid}在日志输出中打印“sessionid”,但是在一个记录器上全局更改它会在另一个记录器上更改它
这能做到吗?我是否错误地使用了存储库?仅仅是对100个文件记录到一个文件的一些反馈不是很有效。如果您有很多日志消息,那么日志记录可能会对解决方案的性能产生巨大影响。每次进程记录日志时,该进程都会尝试获取锁,并在记录后释放锁。考虑另一个appender的性能 在登录到您的辅助文件时,我将在您的配置中创建第二个appender,然后指定使用该配置的记录器
<logger name="SecondFile">
<level value="INFO" />
</logger>
var logger = LogManager.GetLogger("SecondFile");
logger.Info("This logs to your second file");
var logger=LogManager.GetLogger(“第二个文件”);
Info(“此日志记录到您的第二个文件”);
在本页上,您可以找到如何使用。对不同的作用域进行了解释,我建议看一下堆栈。仅对100个文件记录到一个文件的一些反馈不是很有效。如果您有很多日志消息,那么日志记录可能会对解决方案的性能产生巨大影响。每次进程记录日志时,该进程都会尝试获取锁,并在记录后释放锁。考虑另一个appender的性能 在登录到您的辅助文件时,我将在您的配置中创建第二个appender,然后指定使用该配置的记录器
<logger name="SecondFile">
<level value="INFO" />
</logger>
var logger = LogManager.GetLogger("SecondFile");
logger.Info("This logs to your second file");
var logger=LogManager.GetLogger(“第二个文件”);
Info(“此日志记录到您的第二个文件”);
在本页上,您可以找到如何使用。对不同的范围进行了解释,我建议您查看一下堆栈。谢谢您的反馈。100个进程更像是可以随时运行的100个任务,并使用文件名中的进程名称登录到自己的文件。除非我误解了上下文,否则我认为这是行不通的-流程使用2个记录器,但始终处于相同的上下文中-相同的全局、相同的线程、相同的逻辑线程、相同的事件。感谢您的反馈。100个进程更像是可以随时运行的100个任务,并使用文件名中的进程名称登录到自己的文件。除非我误解了上下文,否则我认为这不会起作用-进程使用2个记录器,但始终处于相同的上下文中-相同的全局、相同的线程、相同的逻辑线程、相同的事件。