【发布时间】:2016-07-27 14:59:43
【问题描述】:
我在 WPF 应用程序中使用 log4net。 log4net 在从 Visual Studio 运行应用程序时工作,但是,当我们通过来自 bin 的可执行文件运行应用程序时,它不工作。
我们正在使用log4net.config 文件,它的外观如下:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<log4net debug="true">
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<param name="File" value="C:/ProgramData/CompApps/Logs/AppName/log.txt" />
<appendToFile value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="25" />
<maximumFileSize value="20MB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%utcdate UTC %property{log4net:HostName} [%thread] %-5level %logger - %method() - %message%newline" />
</layout>
</appender>
<root>
<level value="Info" />
<appender-ref ref="RollingFileAppender" />
</root>
</log4net>
</configuration>
log4net.config 属性
Build Action: Content
Copy to Output Directory: Copy always
AssemblyInfo.cs:
// log4net config
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]
这在我们要使用记录器的每个类中使用:
private static readonly ILog log = LogManager.GetLogger(typeof(App));
【问题讨论】:
-
运行应用程序的用户是否对
C:/ProgramData/CompApps/Logs/AppName/有写权限? -
是的,运行应用程序的用户对
C:/ProgramData/CompApps/Logs/AppName/有写权限 -
debug="true"从 .exe 执行时不记录是否有意义? -
我删除了
debug="true"标志 - 结果相同。 -
如果您直接从
bin文件夹运行它,log4net.config文件是否也位于.exe旁边?您如何测试.exe的执行上下文可以访问logs文件夹?
标签: c# .net wpf log4net log4net-configuration