Vb.net 如何让NLog在VS开发环境之外工作
我这里有一个难题。出于某种原因,我的Nlog实现将不再在已安装的可执行文件中工作,在VS2013开发环境中工作得非常好,而在已安装的可执行文件中工作 DevEnv是VB.NET 我在诊断方面的第一个调用端口是添加: internalLogFile=“c:\log.txt”internalLogLevel=“跟踪” 对于nlog.config文件,但存在相同的问题(适用于devenv,但不适用于可执行文件)。我的日志文件被写入CommomMapApplicationData文件夹中的文件夹结构 d:\programdata\CompanyName\AppName\Logs nlog.config安装在以下位置并从中读取: d:\programdata\CompanyName\AppName\QueryConfig 原因是我们的公司IT安全禁止写入C:驱动器(通过授权安装除外),并且我在nlog.config文件“LogId”中有一个变量,需要从应用程序中更新。这是我的nlog.config文件:Vb.net 如何让NLog在VS开发环境之外工作,vb.net,visual-studio-2013,nlog,Vb.net,Visual Studio 2013,Nlog,我这里有一个难题。出于某种原因,我的Nlog实现将不再在已安装的可执行文件中工作,在VS2013开发环境中工作得非常好,而在已安装的可执行文件中工作 DevEnv是VB.NET 我在诊断方面的第一个调用端口是添加: internalLogFile=“c:\log.txt”internalLogLevel=“跟踪” 对于nlog.config文件,但存在相同的问题(适用于devenv,但不适用于可执行文件)。我的日志文件被写入CommomMapApplicationData文件夹中的文件夹结构 d
<?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" autoReload="true"
internalLogFile="c:\log.txt" internalLogLevel="Trace">
<variable name="companyName" value="Company Name"/>
<variable name="logFolder" value="${specialfolder:folder=CommonApplicationData}/${companyName}/AppName/Logs/"/>
<variable name="startDelim" value="["/>
<variable name="endDelim" value="]"/>
<variable name="filename" value="${date:format=yyyy-MM-dd}_${gdc:item=appName}.log"/>
<variable name="fieldDelim" value="|"/>
<variable name="logId" value="1"/>
<variable name="headerLayout" value="Application Name: ${processname} File Version: ${gdc:item=fileVersion} Released: ${gdc:item=releaseDate} User: ${windows-identity}" />
<variable name="normalLayout" value="${gdc:item=logId}${fieldDelim}${date:format=HH\:mm\:ss}${fieldDelim}${windows-identity}${fieldDelim}${level}${fieldDelim}${message}${exception:format=tostring}" />
<variable name="traceLayout" value="${gdc:item=logId}${fieldDelim}${date:format=HH\:mm\:ss}${fieldDelim}${windows-identity}${fieldDelim}${level}${fieldDelim}${message}${exception:format=tostring}"/>
<targets async="true">
<target name="fileHeader"
xsi:type="File"
fileName="${logFolder}${filename}"
layout="${headerLayout}"/>
<target name="normal"
xsi:type="File"
fileName="${logFolder}${filename}"
layout="${normalLayout}"/>
</targets>
<rules>
<logger name="HeaderLogger" minlevel="Info" writeTo="fileHeader" final="true"/>
<logger name="*" minlevel="Trace" writeTo="normal" />
</rules>
</nlog>
最后,当应用程序关闭时,日志将以以下方式结束:
2018-08-13 15:35:56.9262信息正在关闭日志。。。
2018-08-13 15:35:56.9262信息记录器已关闭
问候
Paul。您可以尝试在运行时启用内部记录器,而不是通过Nlog.config。确保在创建第一个记录器对象(也是静态对象)之前激活内部记录器。另外,请尝试将内部日志写入c:/temp而不是c:/。好的,伙计们。。。根据建议,修改代码以编程方式针对c:\temp中的log.txt启动内部日志记录。奇怪的是,这成功地生成了一些日志内容,但是与从配置文件启动时的内部日志内容相比,内容显得有些稀疏。请参阅上面的编辑到主条目。看起来它找不到您的
NLog.config
文件。另见
2018-08-13 15:21:34.9302 Debug Targets for HeaderLogger by level:
2018-08-13 15:21:34.9302 Debug Trace =>
2018-08-13 15:21:34.9302 Debug Debug =>
2018-08-13 15:21:34.9302 Debug Info =>
2018-08-13 15:21:34.9412 Debug Warn =>
2018-08-13 15:21:34.9412 Debug Error =>
2018-08-13 15:21:34.9412 Debug Fatal =>
2018-08-13 15:21:37.0902 Debug Targets for HeaderLogger by level:
2018-08-13 15:21:37.0902 Debug Trace =>
2018-08-13 15:21:37.0902 Debug Debug =>
2018-08-13 15:21:37.0932 Debug Info =>
2018-08-13 15:21:37.0932 Debug Warn =>
2018-08-13 15:21:37.0932 Debug Error =>
2018-08-13 15:21:37.0932 Debug Fatal =>
2018-08-13 15:21:39.1012 Trace LogFactory.Flush(00:00:15)
...