因此,此应用程序将所有日志文件写入名为Log1的目录,并在main.log文件中。
现在,如果对外部dll进行了调用。 我们知道这个dll也使用log4net写入另一个日志文件。 它写入Log2目录和文件second.log
但现在奇怪的想法发生了。 在第一次写入second.log之后,来自主应用程序的所有其他日志消息都将写入此second.log文件。
在主应用程序App.config中有以下设置:
<appSettings>
<add key="logDirectory" value="Log1" />
<add key="logFileName" value="main" />
<add key="logFileExtension" value="log" />
<add key="logFilesToArchive" value="10" />
<add key="personalizationDirectory" value="Personalization" />
<add key="useMockService" value="true" />
<add key="ClientSettingsProvider.ServiceUri" value="" />
</appSettings>
<log4net>
<appender name="LogFileAppender" type="log4net.Appender.FileAppender,log4net">
<param name="AppendToFile" value="true" />
<layout type="log4net.Layout.PatternLayout,log4net">
<param name="ConversionPattern" value="%date [%thread] %-5level - %logger (Line %line) - %message%newline%exception" />
</layout>
</appender>
<root>
<priority value="DEBUG" />
<appender-ref ref="LogFileAppender" />
</root>
</log4net>
此外部dll具有以下log4net配置:
<appender name="OutputDebugStringAppender" type="log4net.Appender.OutputDebugStringAppender" >
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
</layout>
</appender>
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender" >
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %-5level %logger - %message%newline" />
</layout>
</appender>
<root>
<level value="INFO" />
<appender-ref ref="RollingLogFileAppender" />
</root>
<logger name="NamespaceXYZ.Test">
<level value="DEBUG" />
<appender-ref ref="OutputDebugStringAppender" />
<appender-ref ref="ConsoleAppender" />
</logger>
为什么会这样?
感谢您的意见:)
答案 0 :(得分:2)
当然发生的事情是您正在调用的库会触发main log4net repository上的重新配置。此配置可以从您定义的配置文件或以编程方式加载。
你有一些选择:
RepositoryAttribute
为程序集中的所有记录程序指定自定义存储库。这样,您的配置可以与装配配置一起生效