Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Log4Net不';部署时不记录日志_C#_Wpf_Deployment_Log4net - Fatal编程技术网

C# Log4Net不';部署时不记录日志

C# Log4Net不';部署时不记录日志,c#,wpf,deployment,log4net,C#,Wpf,Deployment,Log4net,我正在使用log4net来记录我的应用程序(这是一个WPF应用程序)。 日志记录在调试模式下运行良好,但在我部署的版本中不起作用。 应用程序安装在C:\ProgramFiles(x86)\MyApp中(我使用InnoSetup创建安装程序)。 在调试模式下,日志文件夹已创建,日志文件也已创建。 在部署的版本中,不会显示任何内容,也不会创建日志文件夹 以下是我的log4net配置: <?xml version="1.0"?> <configuration> <

我正在使用log4net来记录我的应用程序(这是一个WPF应用程序)。 日志记录在调试模式下运行良好,但在我部署的版本中不起作用。 应用程序安装在C:\ProgramFiles(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>
我尝试将“级别”值更改为“全部”,但没有任何更改。 我认为这可能是一个需要设置的参数,因为它在调试模式下运行良好(日志文件正确地创建在文件夹“x86\debug\log\”中)


我做了一些研究,但没有发现任何相关信息。

听起来像是权限问题:目录权限(和UAC)将阻止应用程序写入C:\Program Files(x86)以下的任何内容,除非您以管理员身份运行。请将日志路径更改为其他位置,例如
${LOCALAPPDATA}\MyApp\MyApp.log

您可以右键单击“C:\Program Files(x86)\MyApp”文件夹、属性\u>Securities并添加您正在运行应用程序的用户以获得写入权限吗? 或者如果你右键点击你的应用并“以管理员身份运行”?
有什么不同吗?

效果很好。我改变了路径:
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");
}