我正在使用一个网站项目,我从Nuget添加了Nlog,并使用了以下NLog配置:
<?xml version="1.0" encoding="utf-8" ?>
<nlog autoReload="true"
throwExceptions="true"
xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<targets>
<target name="logfile" xsi:type="File" fileName="log.txt" />
</targets>
<rules>
<logger name="*" minlevel="Info" writeTo="logfile" />
</rules>
</nlog>
Run Code Online (Sandbox Code Playgroud)
我运行了ProcessMonitor,它显示Nlog正在尝试在IISExpress文件夹而不是我的网站项目文件夹中创建log.txt.
C:\ Program Files(x86)\ IIS Express\log.txt
如何让NLog将我的日志文件log.txt放在我的网站项目文件夹而不是IISExpress文件夹中?
我只想发送一封电子邮件,其中包含我从C#控制台应用程序获得的所有错误.
我有目标:
<target xsi:type="File" name="HeelpAdsImport_log" fileName="${basedir}/logs/HeelpAdsImport-${shortdate}.log" layout="${longdate} ${uppercase:${level}} ${callsite:className=true:includeSourcePath=true:methodName=true} ${message}" />
<target name="HeelpAdsImport_patrick_email" xsi:type="Mail"
smtpServer="XXXXX"
smtpPort="25"
smtpAuthentication="Basic"
smtpUserName="YYYYYY"
smtpPassword="*ZZZZZZ"
enableSsl="false"
from="DDDDDDDDDD"
to="EEEEEEEEEEE"
layout="${longdate} ${uppercase:${level}} ${callsite:className=true:includeSourcePath=true:methodName=true} ${message}"
/>
Run Code Online (Sandbox Code Playgroud)
我有一个信息规则和一个错误规则:
<logger name="*" minlevel="Info" writeTo="HeelpAdsImport_log" />
<logger name="*" minlevel="Error" writeTo="HeelpAdsImport_patrick_email" />
Run Code Online (Sandbox Code Playgroud)
我在代码中有几个调用:
logger.Log(LogLevel.Info, " ----- New Ad Success! - auto.id: " + auto.id + " | auto.plate: " + auto.plate);
logger.Log(LogLevel.Error, "| continue error #4 - auto.id: " + auto.id);
Run Code Online (Sandbox Code Playgroud) 我们使用Nlog作为我们的日志框架,我找不到按照我想要的方式存档文件的方法.我想在日志记录文件名中记录日志记录的日期.
Ex 2009-10-01 00:00 -> 2009-10-01:23:59应将所有发生的日志记录放入Log.2009-10-01.log.但是今天的所有日志都应该Log.log用于拖尾等等.
我使用的当前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" >
<extensions>
<add assembly="My.Awesome.LoggingExentions"/>
</extensions>
<targets>
<target name="file1" xsi:type="File"
fileName="${basedir}/Logs/Log.log"
layout="${longdate} ${level:uppercase=true:padding=5} ${session} ${storeid} ${msisdn} - ${logger:shortName=true} - ${message} ${exception:format=tostring}"
archiveEvery="Day"
archiveFileName="${basedir}/Logs/Log${shortdate}-{#}.log"
archiveNumbering="Sequence"
maxArchiveFiles="99999"
keepFileOpen="true"
/>
</targets>
<rules>
<logger name="*" minlevel="Trace" writeTo="file1" />
</rules>
</nlog>
Run Code Online (Sandbox Code Playgroud)
但是,这会将日志文件中的日期设置为创建新日志文件的日期.当您想稍后阅读日志时,这会导致挫败感.
似乎我必须在archiveFileName中至少有一个#,我宁愿不这样做.所以,如果你有一个解决方案,我也会两倍感恩=)
我需要在我的项目中使用日志库,并考虑在Enterprise Logging Block与NLog vs log4net之间.我在比较中发现了一些链接,但大多数链接已经很老了,并抱怨没有新版本的log4net等等.
任何人都建议根据当前数据在易用性,易配置性,性能,可扩展性等方面哪一个更好.
除非我完全失踪了,我的印象中NLOG文档使用${basedir}在它的例子,没有解释什么是它的位置应该是.
在哪里可以找到列出所有可能选项的信息?
我定义了这个配置:
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" throwExceptions="true">
<targets>
<target name="file" xsi:type="File"
layout="${longdate} ${logger} ${message}"
fileName="${basedir}/logs/${shortdate}.txt"
keepFileOpen="false"
encoding="iso-8859-2" />
</targets>
<rules>
<logger name="*" minlevel="Debug" writeTo="file" />
</rules>
</nlog>
Run Code Online (Sandbox Code Playgroud)
它的工作范围我可以告诉,但我还没有得到任何记录在哪里的线索.
我有一个Windows服务并使用nlog进行日志记录.当我从visual studio ide运行时,一切正常.日志文件更新没有问题.当我安装该服务时,该服务运行正常,但日志文件永远不会更新.如果有帮助,我在LOCAL SERVICE下运行.是的,我在我的应用程序文件夹下创建了logs目录.
<?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="${basedir}/logs/${shortdate}_info.txt"
layout="${date} ${logger} ${message}" />
</targets>
<rules>
<logger name="*" minlevel="Info" maxlevel="Info" writeTo="file" />
</rules>
</nlog>
Run Code Online (Sandbox Code Playgroud) 我试图让NLOG写入到数据库,但我目前的代码,它抛出一个异常,当我试图调试,例外情况是:为"NotifyIcon.Program"的类型初始值引发异常.
我的NLog配置文件代码如下,因为这似乎是导致问题,因为它是我改变的唯一代码.
<?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">
<!--
See http://nlog-project.org/wiki/Configuration_file
for information on customizing logging rules and outputs.
-->
<targets>
<!-- add your targets here -->
<target name="database" xsi:type="Database" />
<target xsi:type="Database"
name="String"
dbUserName="Layout"
dbProvider="sqlserver"
useTransactions="false"
connectionStringName="String"
connectionString="Data Source=AC-02\SQLEXPRESS;Initial Catalog=master;Integrated Security=True"
keepConnection="true"
dbDatabase="Layout"
dbPassword="Layout"
dbHost="Layout"
installConnectionString="Layout"
commandText="INSERT INTO Logs (Machine_Name, Username, Logon_Time, Screensaver_On, Screensaver_Off, Logoff_Time, Program_Start) Values @MachineName, @Username, @LogonTime, @Screensaver_On, @Screensaver_Off, @LogoffTime, @ProgramStart "/>
</targets>
<rules>
<logger name="*" minlevel="Trace" writeTo="database" />
</rules>
</nlog>
Run Code Online (Sandbox Code Playgroud)
任何和所有的帮助将不胜感激=]
如何target在NLog.config文件中设置以在用户应用程序数据目录中创建日志文件?
下面是文件的所需位置.
C:\用户\用户ID \应用程序数据\本地...\LOGFILE.TXT
我尝试fileName以下列方式设置,但没有成功.
target name="logfile" xsi:type="File" fileName="%APPDATA%/.../LogFile.txt"
target name="logfile" xsi:type="File" fileName="${APPDATA}/.../LogFile.txt"
target name="logfile" xsi:type="File" fileName="${%APPDATA%}/.../LogFile.txt"
我一直在努力在我的ASP.NET MVC 3应用程序上设置NLog v2,到目前为止它运行良好.(我使用的是来自官方的NuGet库包).然而,当我尝试更改日志布局包括任何aspnet-*布局渲染器,我得到一个配置错误.我已将问题减少到以下最小用例:
在configSections块中:
<section name="nlog" type="NLog.Config.ConfigSectionHandler, NLog"/>
Run Code Online (Sandbox Code Playgroud)
Nlog块:
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" throwExceptions="true">
<variable name="logDirectory" value="C:\Logs" />
<targets>
<target name="logFile" xsi:type="File" fileName="${logDirectory}\app.log"
layout="${aspnet-user-identity}" />
</targets>
<rules>
<logger name="*" minlevel="Info" writeTo="logfile" />
</rules>
Run Code Online (Sandbox Code Playgroud)
如果我改变布局中使用不属于ASPNET*家族的一部分渲染器的任意组合,这个效果很好(我没有测试过的每一个,但我已经看了不少).我得到的错误在这里:
Configuration Error
Description: An error occurred during the processing of a configuration file required to service this request. Please review the specific error details below and modify your configuration file appropriately.
Parser Error Message: An error occurred creating the configuration section handler for nlog: Exception occurred …Run Code Online (Sandbox Code Playgroud) 在我的应用程序中,我每天处理数千个文档.我想,在某些情况下,一些日志,一个按文档记录.然后我想要一个特定的目标在运行时更改输出文件名(和只有文件名).
在网络上我发现如何通过编程来创建目标我只想通过编程更新文件名.我试过下面的代码.我收到的错误是"无法找到LayoutRender'logDirectory'.
任何的想法 ?
谢谢,
var target = (FileTarget)LogManager.Configuration.FindTargetByName("logfile");
target.FileName = "${logDirectory}/file2.txt";
LoggingConfiguration config = new LoggingConfiguration();
var asyncFileTarget = new AsyncTargetWrapper(target);
config.AddTarget("logfile", asyncFileTarget);
LogManager.Configuration = config;
Run Code Online (Sandbox Code Playgroud)
配置文件是:
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<variable name="logDirectory" value="C:/MyLogs"/>
<targets>
<target name="logfile" xsi:type="File" layout="${date:format=dd/MM/yyyy HH\:mm\:ss.fff}|${level}|${stacktrace}|${message}" fileName="${logDirectory}/file.txt" />
</targets>
<rules>
<logger name="*" minlevel="Info" writeTo="logfile" />
</rules>
</nlog>
Run Code Online (Sandbox Code Playgroud)