【发布时间】:2016-11-15 18:27:26
【问题描述】:
我有两个应用程序(A 和 B)。 A 使用 Process.Start() 实例化 B。两者都使用 log4net 将数据记录到两个不同的 XML 文件(File1 和 File2)。
当 B 被直接实例化时,它会记录到文件中。但是当它 通过A实例化,它不会将信息记录到文件中。
以下是我的配置:
<log4net>
<logger name="A.Program" additivity="true">
<level value="INFO"/>
<appender-ref ref="ARollingFileAppender"/>
</logger>
<logger name="B.Program" additivity="true">
<level value="INFO"/>
<appender-ref ref="BRollingFileAppender"/>
</logger>
<appender name="ARollingFileAppender" type="log4net.Appender.RollingFileAppender">
<file type="log4net.Util.PatternString" value="logs/File1.xml"/>
<appendToFile value="true"/>
<datePattern value="yyyyMMdd"/>
<rollingStyle value="Size"/>
<maxSizeRollBackups value="100"/>
<maximumFileSize value="10MB"/>
<layout type="log4net.Layout.XmlLayoutSchemaLog4j">
<locationInfo value="true"/>
</layout>
</appender>
<appender name="BRollingFileAppender" type="log4net.Appender.RollingFileAppender">
<file type="log4net.Util.PatternString" value="logs/File2.xml"/>
<appendToFile value="true"/>
<datePattern value="yyyyMMdd"/>
<rollingStyle value="Size"/>
<maxSizeRollBackups value="100"/>
<maximumFileSize value="10MB"/>
<layout type="log4net.Layout.XmlLayoutSchemaLog4j">
<locationInfo value="true"/>
</layout>
</appender>
</log4net>
我尝试在 A 实例化 B 后对其执行 log4net 调试。它显示以下没有错误:
log4net:打开文件以写入 [ File2 的位置 ] 附加 [True]
但是当我在同一位置检查 File2 时,它没有写入任何日志。
【问题讨论】:
-
log4net 是在 app/web 配置中还是独立文件?如果是前者,是否在两个应用程序中都适用?另外,您如何使用 XmlConfigurator 或程序集属性配置 log4net?
-
它在一个独立的文件中。要配置我使用程序集属性: [程序集:log4net.Config.XmlConfigurator(Watch = true, ConfigFile = "Configuration/CLogging.Config.xml", ConfigFileExtension = "xml")] private static readonly log4net.ILog logger = log4net.LogManager .GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
-
您找到解决方案了吗?我也遇到了同样的情况。