Log4Net 在部署时不会记录
本文关键字:记录 部署 Log4Net | 更新日期: 2023-09-27 18:30:48
我正在使用log4net来记录我的应用程序(这是一个WPF应用程序)。日志记录在调试模式下运行良好,但不适用于我部署的版本。该应用程序安装在C:''Program Files (x86)''MyApp中(我使用InnoSetup创建安装程序)。在调试模式下,日志文件夹和日志文件也创建得很好。在已部署的版本中,不会显示任何内容,也不会创建日志文件夹。
这是我的log4net配置:
<?xml version="1.0"?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net"/>
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup>
<log4net>
<appender name="FileAppender" type="log4net.Appender.RollingFileAppender">
<file value="log'main.log" />
<encoding value="utf-8" />
<appendToFile value="true" />
<maximumFileSize value="1000KB" />
<maxSizeRollBackups value="0" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger: %message%newline" />
</layout>
</appender>
<root>
<level value="INFO" />
<appender-ref ref="FileAppender" />
</root>
</log4net>
</configuration>
这是我在类中编写日志的方式(此示例来自 App.xaml.cs):
protected static readonly ILog log = LogManager.GetLogger(typeof(App));
static App()
{
log4net.Config.XmlConfigurator.Configure();
}
private void Application_Startup(object sender, StartupEventArgs e)
{
log.Info("This is an info log");
}
我尝试将级别值更改为 ALL,但没有任何变化。我认为这可能是要设置的参数,因为它在调试模式下运行良好(日志文件在文件夹"x86''Debug''log''"中正确创建。
我做了一些研究,但我一无所获。
听起来像
是一个权限问题:目录权限(和 UAC)将阻止你的应用写入 C:''Program Files (x86) 以下的任何内容,除非你以管理员身份运行它。 将日志路径更改为其他位置,例如${LOCALAPPDATA}'MyApp'MyApp.log
您可以右键单击"C:''Program Files (x86)''MyApp"文件夹,属性_>证券并将您正在运行应用程序的用户添加到写入权限吗?或者,如果您右键单击您的应用程序并"以管理员身份运行"?有区别吗?