NLog有时它不会写入文件

时间:2014-01-13 14:29:13

标签: c# .net configuration nlog

在我的C#中,我正在使用一个库(Outlook加载项)。

我正在使用NLog for .NET 3.5

问题是在我的开发机器上,有时NLog不会将日志写入文件。

我正在使用NLog版本2.0.0.0,而Windows 8.1 Pro出现问题

这是App.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>

  <configSections>
    <section name="nlog" type="NLog.Config.ConfigSectionHandler, NLog"/>
  </configSections>

  <nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <targets>
      <target name="file" xsi:type="File"
              fileName="${specialfolder:folder=ApplicationData}\\AppName\\Logs\\log.txt"
              archiveEvery="Day"
              archiveNumbering="Rolling"
              maxArchiveFiles="30"
              layout="${date:format=yyyy-MM-dd HH\:mm\:ss} ${level:uppercase=true} ${logger} - ${message} ${exception:format=tostring}"/>
    </targets>
    <rules>
      <logger name="*" minlevel="Debug" writeTo="file"/>
    </rules>
  </nlog>

  <startup>
    <supportedRuntime version="v2.0.50727"/>
  </startup>

</configuration>

在发行版中,目前我没有包含文件NLog.config,还包括它,我还没有看到任何变化

以下是问题发生的方法, 我应该在我的发行版中包含特殊库吗? (比如以stdole.dll为例?)

    private void AddinModule_AddinStartupComplete(object sender, EventArgs e)
    {
        String aversion = Assembly.GetExecutingAssembly().GetName().Version.ToString();
        log.Debug("AddinStartupComplete called version: {0}", aversion);
    }

1 个答案:

答案 0 :(得分:0)

好的,好像我找到了解决办法 首先,我修改了App.config文件,如下所示:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>

  <startup>
    <supportedRuntime version="v2.0.50727"/>
  </startup>

</configuration>

然后我按如下方式包含了一个NLog.config文件:

<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

  <targets> 
    <target name="file" xsi:type="File" 
            fileName="${specialfolder:folder=ApplicationData}\\AppName\\Logs\\log.txt"
            archiveEvery="Day"
            archiveNumbering="Rolling"
            maxArchiveFiles="30"            
            layout="${date:format=yyyy-MM-dd HH\:mm\:ss} ${level:uppercase=true} ${logger} - ${message} ${exception:format=tostring}"/>
  </targets> 

  <rules>
    <logger name="*" minlevel="Debug" writeTo="file"/>      
  </rules> 

</nlog>

我还指定在设置中包含文件adxloader64.dll,尽管编译器会给我一个警告,说明资源与指定的设置类型不兼容:x86。

注意:我正在使用Add-in Express 7.4.x构建设置

现在只有一点需要澄清:我应该检查一下这个设置是否也适用于32位Windows系统(我必须在Windows 7家中进行测试)