我有一个服务应用程序,它在启动时读取XML文件并为XML文件中的每个条目启动一个线程。每个线程都创建一个工作者类的实例,这需要记录器将任何输出记录到特定于线程的日志文件。为每个单独的线程记录日志文件
在我的app.config有设置为使用XML附加目的地log4net的配置设置和文件被指定为PatternString服务,如下所示:
<appender name="XmlAppender" type="log4net.Appender.FileAppender">
<file type="log4net.Util.PatternString" value="D:\Temp\Logs\%property{LogName}.log" />
<immediateFlush value="true"/>
<appendToFile value="true" />
<layout type="log4net.Layout.SimpleLayout" />
</appender>
在用于的每个实例的螺纹锁定方法创建的工人类我使用log4net.LogManager.GetLogger("MyLogger")
方法得到记录器,然后使用ThreadContext.Properties["LogName"] = "Log name prefix"
设置当前线程PatternStrings LogName属性。
所有的文件都被创建,但是当记录器被调用时,它只是将所有消息记录到一个看似随机的文件中。
我已经搜索了很长一段时间,试图找到解决方案或一些答案,我做错了,但我没有运气。
有没有人知道为什么会发生这种情况?
非常感谢!我有与线程和登录到不同的文件相同的问题。我通过了很多帖子和解决方案,但只有这一个让我很兴奋。 –
非常感谢你......这种方法解决了我的问题...... – Emerson