c# - 部署时 Log4Net 不记录

标签 c# wpf deployment log4net

我正在使用 log4net 记录我的应用程序(这是一个 WPF 应用程序)。 日志记录在 Debug模式下运行良好,但不适用于我部署的版本。 该应用程序安装在 C:\Program Files (x86)\MyApp 中(我使用 InnoSetup 创建安装程序)。 在 Debug模式下,日志文件夹和日志文件都创建得很好。 在已部署的版本中,没有出现任何内容,未创建日志文件夹。

这是我的 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,但没有任何变化。 我认为它可能是一个要设置的参数,因为它在 Debug模式下运行良好(日志文件在文件夹“x86\Debug\log\”中正确创建)。

我做了一些研究,但我一无所获。

最佳答案

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

关于c# - 部署时 Log4Net 不记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18695573/

相关文章:

c# - 如何跨网络实现锁定

wpf - WPF 中的多个 KeyBinding,如 Visual Studio

java - Maven - 将远程存储库也用作本地存储库

c# - NSubstitute 模拟 Mongo IFindFluent 不起作用

c# - C#中使用XML文件存储数据

c# - 鼠标移动比重绘wpf更快

asp.net - 有没有办法摆脱 ASP.NET Web 部署项目中的 aspx 占位符文件?

windows - 如何从 Windows 10 专业版安装文件中获取 install.wim

C# 无法解析符号

c# - 使用异步获取坐标并存储在 C# 模型中