我已将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>
任何帮助都会很棒。干杯!
答案 0 :(得分:7)
NLog.config是否将“复制到输出目录”属性设置为“始终复制”? https://stackoverflow.com/a/8881521/438760
答案 1 :(得分: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>
答案 2 :(得分:0)
我猜双xml版本语句(第1行和第2行)是一个复制/粘贴问题....
可能是一个愚蠢的问题,但你将minLevel设置为Error。您是否遇到了可能被记录的错误,或者您是否尝试将其降低到信息或调试?
答案 3 :(得分:0)
对我来说,我的NLog停止记录的原因与上述建议不同。
在更新软件包期间,必须自动将一个nlog部分添加到我的Web.config底部。它可能是ApplicationInsights。显然这需要优先考虑,这导致它停止检查我的Nlog.config文件。
一旦我从web.config中删除了该部分,它就会再次从我的nlog.config文件中神奇地读取。我小心翼翼地从web.config中获取扩展,目标和规则,并确保它们整齐地放在我的nlog.config文件中。