4

我已将 NLog 添加到我的项目中,并且在开发环境中,它工作正常。

我创建了一个安装文件来部署我的应用程序。NLog.config 文件未在安装项目中显示为依赖项。因此,我将它添加为一个文件,并且在部署时它与 exe 文件和 App.config 位于同一目录中。

它不做任何日志记录。我不知道为什么。这是配置文件:

<?xml version="1.0" encoding="utf-8" ?>
<?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">
  <variable name="day" value="${date:format=dd}" />
  <variable name="month" value="${date:format=MM}" />
  <variable name="year" value="${date:format=yyyy}" />  
  <variable name="verbose" value="${longdate} | ${level} | ${message} | ${exception:format=tostring,message,method:maxInnerExceptionLevel=5:innerFormat=shortType,message,method}}" />

  <targets>
    <target name="logfile" xsi:type="File" fileName="${basedir}/Logs/${year}${month}${day}.log" layout="${verbose}" />
  </targets>

  <rules>
    <logger name="*" minlevel="Error" writeTo="logfile" />
  </rules>
</nlog>

任何帮助都会很棒。干杯!

4

4 回答 4

7

NLog.config 是否将属性“复制到输出目录”设置为“始终复制”?https://stackoverflow.com/a/8881521/438760

于 2012-04-25T11:15:38.097 回答
4

将您的 NLog 配置放入yourapp.exe.config文件中。像这样:

<configuration>
   <configSections>
      <section name="nlog" type="NLog.Config.ConfigSectionHandler, NLog"/>
   </configSections>
   <nlog>
      <variable name="day" value="${date:format=dd}" />
      ...
      <targets>
         <target name="logfile" xsi:type="File" .../>
      </targets>
      <rules>
         <logger name="*" minlevel="Error" writeTo="logfile" />
     </rules>
   </nlog>
</configuration>
于 2012-04-23T19:28:55.977 回答
0

我猜双 xml 版本语句(第 1 行和第 2 行)是复制/粘贴问题....

可能是一个愚蠢的问题,但是您将 minLevel 设置为 Error。您是否真的遇到了将被记录的错误,或者您是否尝试将其降低为信息或调试?

于 2012-04-23T19:30:08.677 回答
0

对我来说,我的 NLog 停止记录的原因与上述建议不同。

在更新包的过程中,一定有一些东西自动在我的 Web.config 的底部添加了一个 nlog 部分。它可能是 ApplicationInsights。显然这是优先考虑的,这导致它停止检查我的 Nlog.config 文件。

一旦我从我的 web.config 中删除了该部分,它就开始神奇地再次从我的 nlog.config 文件中读取。我注意从 web.config 中获取扩展、目标和规则,并确保它们整齐地放置在我的 nlog.config 文件中。

于 2018-05-09T22:01:11.783 回答