NLog日志使用方法
2014-07-03 12:36
232 查看
Nlog是一款可以通过自动化配置来把log信息指定写入 win console,Sql server,甚至是通过STMP 发送邮件的log engine
首先下载Nlog DLL,通过网上直接download 或者nuget 下载DLL都可以。
http://nlog-project.org/download/
然后把下载下来的Nlog.dll ,Nlog,extension.dll 加入项目reference.
我暂时只加载了Nlog,因为还没去研究Nlog.extension有什么功能。
之后就是配置文件了,(Nlog Configuration), 它其实是一个 config文件Name:(Nlog.config)
格式如下:
或者如果你是WebAPP的话,可以把config直接写在web.config的<configuration>节点下,我比较喜欢这种
<configuration>
<configSections>
<section name="nlog" type="NLog.Config.ConfigSectionHandler, NLog"/>
</configSections>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<!--See http://nlog-project.org/wiki/Configuration_filefor information on customizing logging rules and outputs. -->
<targets>
<target xsi:type="File" name="f" fileName="${basedir}/APP_Data/logs/${shortdate}.log" layout="${longdate} ${uppercase:${level}} ${message}" />
</targets>
<rules>
<logger name="*" minlevel="Trace" writeTo="f" />
</rules>
</nlog>
</configuration>
接下来就是比较有技术含量的东西了,如何把log写入数据库,或者发邮件通知,也是通过配置文件,配置如下:
需要注意的是,配置文件的
<target> 存放log的地方,文件/数据库/邮件
<rule>是写入/显示log的方式
最后就是Nlog的语句了:
using NLog;
private static Logger logger = LogManager.GetCurrentClassLogger();
public ActionResult Index()
{
logger.Trace("Sample trace message");
logger.Debug("Sample debug message");
logger.Info("Sample informational message");
logger.Warn("Sample warning message");
logger.Error("Sample error message");
logger.Fatal("Sample fatal error message");
// alternatively you can call the Log() method
// and pass log level as the parameter.
logger.Log(LogLevel.Info, "Sample informational message");
如果你写入的是consoleApp,你会发现不同的log颜色会不同,一目了然
首先下载Nlog DLL,通过网上直接download 或者nuget 下载DLL都可以。
http://nlog-project.org/download/
然后把下载下来的Nlog.dll ,Nlog,extension.dll 加入项目reference.
我暂时只加载了Nlog,因为还没去研究Nlog.extension有什么功能。
之后就是配置文件了,(Nlog Configuration), 它其实是一个 config文件Name:(Nlog.config)
格式如下:
01 | <?xml version= "1.0" encoding= "utf-8" ?> |
02 | <nlog xmlns= "http://www.nlog-project.org/schemas/NLog.xsd" |
03 | xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance" > |
04 |
05 | <!-- |
06 | See http://nlog-project.org/wiki/Configuration_file |
07 | for information on customizing logging rules and outputs. |
08 | --> |
09 | <targets> |
10 | <!-- add your targets here --> |
11 |
12 | <!-- |
13 | <target xsi:type= "File" name= "f" fileName= "${basedir}/logs/${shortdate}.log" |
14 | layout= "${longdate} ${uppercase:${level}} ${message}" /> |
15 | --> |
16 | </targets> |
17 |
18 | <rules> |
19 | <!-- add your logging rules here --> |
20 |
21 | <!-- |
22 | <logger name= "*" minlevel= "Trace" writeTo= "f" /> |
23 | --> |
24 | </rules> |
25 | </nlog> |
<configuration>
<configSections>
<section name="nlog" type="NLog.Config.ConfigSectionHandler, NLog"/>
</configSections>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<!--See http://nlog-project.org/wiki/Configuration_filefor information on customizing logging rules and outputs. -->
<targets>
<target xsi:type="File" name="f" fileName="${basedir}/APP_Data/logs/${shortdate}.log" layout="${longdate} ${uppercase:${level}} ${message}" />
</targets>
<rules>
<logger name="*" minlevel="Trace" writeTo="f" />
</rules>
</nlog>
</configuration>
接下来就是比较有技术含量的东西了,如何把log写入数据库,或者发邮件通知,也是通过配置文件,配置如下:
<? xml version = "1.0" encoding = "utf-8" ?> |
02 | < nlog xmlns = "http://www.nlog-project.org/schemas/NLog.xsd" |
03 | xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" > |
04 |
05 | <!--nlog debug start--> |
06 | <!--<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" |
07 | xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
08 | throwExceptions="true" internalLogFile="c:\nlog.txt" internalLogLevel="Debug" autoReload="true">--> |
09 | <!--nlog debug end--> |
10 |
11 | <!-- |
12 | See http://nlog-project.org/wiki/Configuration_file |
13 | for information on customizing logging rules and outputs. |
14 | --> |
15 | < targets > |
16 | <!-- add your targets here --> |
17 |
18 | <!--<target xsi:type="File" name="f" fileName="${basedir}/App_Data/logs/${shortdate}.log" |
19 | layout="${longdate} ${uppercase:${level}} ${message}" />--> |
20 |
21 | < target xsi:type = "File" name = "f" fileName = "${basedir}/App_Data/logs/${shortdate}.log" |
22 | layout = "${longdate} ${uppercase:${level}} ${loginuser} ${message} ${machinename} ${exception:format=type} ${callsite:className=true} ${logger} ${exception:stacktrace} ${exception:format=tostring}" /> |
23 |
24 | < target xsi:type = "Database" name = "db" dbProvider = "mssql" commandText = "Insert into NLog_Record(time_stamp, level, host, url, type, source, logger, message, stacktrace, detail, loginuser) Values(@time_stamp, @level, @host, @url, @type, @source, @logger, @message, @stacktrace, @detail, @loginuser);" connectionString = "Data Source=localhost;Initial Catalog=Log_DB;Persist Security Info=True;User ID=資料庫登入帳號;Password=資料庫登入密碼;" > |
25 | <!--<parameter name="@time_stamp" layout="${longdate}" />--> |
26 | < parameter name = "@time_stamp" layout = "${date:format=yyyy\-MM\-dd HH\:mm\:ss.fff} " /> |
27 | < parameter name = "@level" layout = "${level}" /> |
28 | < parameter name = "@host" layout = "${machinename}" /> |
29 | < parameter name = "@url" layout = "${aspnet-request:serverVariable=url}" /> |
30 | < parameter name = "@type" layout = "${exception:format=type}" /> |
31 | < parameter name = "@source" layout = "${callsite:className=true}" /> |
32 | < parameter name = "@logger" layout = "${logger}" /> |
33 | < parameter name = "@message" layout = "${message}" /> |
34 | < parameter name = "@stacktrace" layout = "${exception:stacktrace}" /> |
35 | < parameter name = "@detail" layout = "${exception:format=tostring}" /> |
36 | < parameter name = "@loginuser" layout = "${loginuser}" /> |
37 | </ target > |
38 |
39 | < target xsi:type = "Mail" name = "FatalMail" |
40 | smtpServer = "smtp.gmail.com" |
41 | smtpPort = "587" |
42 | smtpAuthentication = "Basic" |
43 | smtpUsername = "你要寄出的Email帳號" |
44 | smtpPassword = "寄出Email的密碼" |
45 | enableSsl = "true" |
46 | addNewLines = "true" |
47 | from = "寄出的Email" |
48 | to = "收信的Email,收信的Email2" |
49 | subject = "${machinename} 於 ${shortdate} ${time} Log級別:${level} 於 ${callsite:className=true}, 出現 ${exception:format=type}!" |
50 | header = "=========================================================================" |
51 | body="${newline} |
52 | 發生時間:${longdate} ${newline}${newline} |
53 | Log等級:${ level:uppercase = true } ${newline}${newline} |
54 | Logger:${logger} ${newline}${newline} |
55 | Source:${ callsite:className = true } ${newline}${newline} |
56 | 使用者:${loginuser} ${newline}${newline} |
57 | Exception類別:${ exception:format = type } ${newline}${newline} |
58 | 錯誤訊息:${message} ${newline}${newline}" |
59 | footer = "=========================================================================" |
60 | /> |
61 |
62 | < target bufferSize = "5" name = "ErrorMail" xsi:type = "BufferingWrapper" > |
63 | < target xsi:type = "Mail" |
64 | smtpServer = "smtp.gmail.com" |
65 | smtpPort = "587" |
66 | smtpAuthentication = "Basic" |
67 | smtpUsername = "你要寄出的Email帳號" |
68 | smtpPassword = "寄出Email的密碼" |
69 | enableSsl = "true" |
70 | addNewLines = "true" |
71 | from = "寄出的Email" |
72 | to = "收信的Email,收信的Email2" |
73 | subject = "${machinename} 於 ${shortdate} ${time} Log級別:${level} 出現錯誤!" |
74 | header = "=========================================================================" |
75 | body="${newline} |
76 | 發生時間:${longdate} ${newline}${newline} |
77 | Log等級:${ level:uppercase = true } ${newline}${newline} |
78 | Logger:${logger} ${newline}${newline} |
79 | Source:${ callsite:className = true } ${newline}${newline} |
80 | 使用者:${loginuser} ${newline}${newline} |
81 | Exception類別:${ exception:format = type } ${newline}${newline} |
82 | 錯誤訊息:${message} ${newline}${newline}" |
83 | footer = "=========================================================================" |
84 | /> |
85 | </ target > |
86 |
87 | </ targets > |
88 |
89 | < rules > |
90 | <!-- add your logging rules here --> |
91 |
92 | < logger name = "*" maxlevel = "Info" writeTo = "f" /> |
93 | < logger name = "*" minlevel = "Warn" writeTo = "db" /> |
94 | < logger name = "*" level = "Fatal" writeTo = "FatalMail" /> |
95 | < logger name = "*" level = "Error" writeTo = "ErrorMail" /> |
96 |
97 | </ rules > |
98 | </ nlog > |
<target> 存放log的地方,文件/数据库/邮件
<rule>是写入/显示log的方式
最后就是Nlog的语句了:
using NLog;
private static Logger logger = LogManager.GetCurrentClassLogger();
public ActionResult Index()
{
logger.Trace("Sample trace message");
logger.Debug("Sample debug message");
logger.Info("Sample informational message");
logger.Warn("Sample warning message");
logger.Error("Sample error message");
logger.Fatal("Sample fatal error message");
// alternatively you can call the Log() method
// and pass log level as the parameter.
logger.Log(LogLevel.Info, "Sample informational message");
如果你写入的是consoleApp,你会发现不同的log颜色会不同,一目了然
相关文章推荐
- C# 使用Nlog记录日志到数据库 使用LogEventInfo类获取,命名空间名称、类名、方法名
- Asp.net Core中使用NLog,并封装成公共的日志方法
- Silverlight中使用NLog记录日志方法详解
- NLog日志使用方法
- EF Core使用SQL调用返回其他类型的查询 ASP.NET Core 2.0 使用NLog实现日志记录 CSS 3D transforms cSharp:use Activator.CreateInstance with an Interface? SqlHelper DBHelper C# Thread.Abort方法真的让线程停止了吗? 注意!你的Thread.Abort方法真
- 使用NLog为Silverlight增加日志记录功能
- log4net日志记录类使用方法
- 【Vegas原创】ORA-01194解决方法:使用在线日志恢复数据库
- OpenJPA 输出 SQL 日志和使用连接池的方法
- log4j和commons.logging日志记录的使用方法
- 日志组件logback的介绍及配置使用方法(二)
- Log2Console日志监测工具使用方法
- 日志分析logmnr使用方法_分享
- 日志组件logback的介绍及配置使用方法(二)
- log4net 日志组件使用方法
- Win7下的使用QTP进行猴子测试的性能日志实现方法
- java日志信息 log4j 使用方法
- 日志分析logmnr使用方法
- dotNET下使用EventLog類寫日志,出現權限不夠的解決方法!(即寫Windows日志權限不夠)
- java日志信息 log4j 使用方法 【转】