我目前在许多项目中使用NLog.在某些情况下,我登录到数据库.
这是我想做的事情:
CREATE TABLE [dbo].[NLogEntries](
[Id] [bigint] IDENTITY(1,1) NOT NULL,
[Origin] [nvarchar](100) NOT NULL,
[LogLevel] [nvarchar](20) NOT NULL,
[Message] [nvarchar](3600) NOT NULL,
[CreatedOn] [datetime] NOT NULL,
[OrderId] [int] NULL --Custom field!
)
Run Code Online (Sandbox Code Playgroud)
NLog.config和这个目标:
<target type="Database" name="database" connectionstring="Server=localhost;Database=NLog;Trusted_Connection=True;">
<commandText>
INSERT INTO NLogEntries ([Origin], [Message], [LogLevel],[CreatedOn],[OrderId]) VALUES (@Origin,@Message,@LogLevel,@Date, @OrderId);
</commandText>
<parameter name="@Date" layout="${date}"/>
<parameter name="@Origin" layout="${callsite}"/>
<parameter name="@LogLevel" layout="${level}"/>
<parameter name="@message" layout="${message}"/>
<parameter name="@OrderId" layout="${orderId}"/> <!-- custom field! -->
</target>
Run Code Online (Sandbox Code Playgroud)
然后记录这样的事情:
var logger = LogManager.GetCurrentClassLogger();
var orderId = 123;
logger.Debug("What is going …Run Code Online (Sandbox Code Playgroud) 如何编写NLog的布局,以毫秒为单位输出时间11:32:08:123?我用,${date:format=yyyy-MM-dd HH\:mm\:ss}但我的日志需要更多的时间精度.
我正在尝试让NLog登录到我的数据库日志表但无济于事.我确定我的连接字符串是正确的,因为它与我的web.config中的其他地方一样.写出文件工作正常,所以我知道它不仅仅是NLog,而且必须是我做错了.以下是我的NLog配置:
<!-- NLOG CONFIGURATION -->
<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/Log ${shortdate}.txt" layout="${longdate} ${callsite} ${level}: ${message} ${exception:format=Message,StackTrace} ${stacktrace}" />
<target type="Database" name="database" connectionstring="MyConnectionString">
<commandText>
insert into MyLog ([CreateDate], [Origin], [LogLevel], [Message], [Exception], [StackTrace]) values (@createDate, @origin, @logLevel, @message, @exception, @stackTrace);
</commandText>
<parameter name="@createDate" layout="${longdate}"/>
<parameter name="@origin" layout="${callsite}"/>
<parameter name="@logLevel" layout="${level}"/>
<parameter name="@message" layout="${message}"/>
<parameter name="@exception" layout="${exception:format=Message,StackTrace}"/>
<parameter name="@stackTrace" layout="${stacktrace}"/>
</target>
</targets>
<rules>
<logger name="*" writeTo="file"/>
<logger name="*" appendTo="database"/>
<!--<logger name="*" writeTo="mail" minlevel="Error"/>-->
</rules>
</nlog>
Run Code Online (Sandbox Code Playgroud) 如何在标准跟踪,Logger.NET,企业库,log4net或Ukadc.Diagnostics之间进行选择?
是否存在一个比另一个更合适的情况?那会是什么?(ASP.NET,控制台应用,Azure云,SOHO,企业...)
有什么好处或缺点?
我是否错过了其他主要的日志记录框架?
在我的NLog配置中,我有一个全能记录器,但我创建的特定记录器非常垃圾,我希望它的输出转到它自己的文件.这一部分很简单,但是catch-all记录器也会收到垃圾邮件日志消息.如何告诉主记录器记录所有内容,但要排除垃圾记录器?
我正在使用NLog 2.0.
这是我第一次使用NLog软件包进行日志记录,但到目前为止,它非常适合使用.
在我的场景中,我需要以编程方式初始化我的NLog LoggingConfiguration设置,而不是通过更典型的配置文件方案.我已经对它进行了测试,并将其全部按照默认方式运行.但是,如何在运行时以编程方式修改我的设置?这里最常见的情况可能是默认情况下应用程序的日志记录级别设置为ERROR,但在特定模块中出现错误,我希望将日志记录级别切换为更加冗长以跟踪错误.我想编写一个小的Web界面,以便我可以在运行时轻松调整这些设置,但我想确保我采用正确的方法.
我第一次使用NLog,我想出了如何写入文本文件,但现在我想给自己发一封电子邮件.我假设您向NLog提供SMTP凭据.程序集调用System.Net.Mail命名空间并处理发送电子邮件.如果这是错的,请告诉我.如果您已经完成此操作之前我会感谢任何有关您完成发送电子邮件的信息.
以下是我的配置.
<?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="logfile" xsi:type="File" fileName="C:\Users\keithb\Desktop\TestLog.txt" />-->
<target name="Mail" xsi:type="Mail" html="true" subject="Error Received" body="${message}"
to="user2@someemaill.com"
from="user@someemail.com"
Encoding="UTF8"
smtpUsername="user@someemail.com"
enableSsl="False"
smtpPassword="pa$$word"
smtpAuthentication="Basic"
smtpServer="mail.someemail.com"
smtpPort="25" />
</targets>
<rules>
<!--<logger name="*" minlevel="Debug" writeTo="logfile" />-->
<logger name="*" level="Error" writeTo="Mail" />
<logger name="*" level="Fatal" writeTo="Mail" />
</rules>
</nlog>
Run Code Online (Sandbox Code Playgroud)
我这样称呼错误
Imports NLog
Public Class HandleGetRouteInfo
Private Shared logger As Logger = LogManager.GetCurrentClassLogger()
Public Shared Function GetRouteInfo(ByVal routeInfo As RequestGetRouteInfo) As GetRouteInfoResponse
'TODO: Check route ID, username, password …Run Code Online (Sandbox Code Playgroud) LogException或任何派生函数ErrorException等似乎完全忽略传入的异常参数.
我在nlog.config文件中缺少格式属性吗?我正在使用Nlog在VS中安装的模板中的样板.
我希望将异常对象和内部异常的信息添加到日志文件中.然而,添加到日志文件的唯一信息是传递给函数的字符串参数.
事实证明,这ErrorException()实际上没那么有用了Error()
我怎样才能获得更深入的报道.特别是Message所有内部属性的完全递归转储Exceptions?