NLog使用整理
NLog使用中碰到的問題整理
1,日志寫mysql數據庫報錯,
原因:
在sql語句中使用了mysql的函數now() 導致插入失敗,
解決辦法: 使用參數代替now().
在nlog配置文件中設置?throwExceptions="true"?internalLogLevel="Debug" 可以是nlog拋出異常方便問題定位,
2、一些layout方法記錄: ?見:https://github.com/NLog/NLog/wiki/Layout-Renderers
? ?自定義參數:
?<variable name="myvar" value="myvalue"/>
則參數?myvar 可以直接使用 ${myvar} 得到值?myvalue
也可以在代碼中定義:
1 <target xsi:type="Database" name="LogOnlog" connectionStringName ="DataBase" > 2 <commandText> 3 Insert into MyLog(Operator_name,Operator_Type,IP,DateTime,Operation) Values(@Operator_name,@Operator_Type,@IP,@DateTime,@Operation); 4 </commandText> 5 <parameter name = "@Operator_name" layout = "${event-context:item=Operator_name}"/> 6 <parameter name = "@Operator_Type" layout = "${event-context:item=Operator_Type}" /> 7 <parameter name = "@DateTime" layout = "${event-context:item=DateTime}"/> 8 <parameter name = "@IP" layout = "${event-context:item=IP}" /> 9 <parameter name = "@Operation" layout = "${event-context:item=Operation}" /> 10 11 </target> 12 13 </targets> 14 15 <rules> 16 <logger name="*" minlevel="Trace " writeTo="LogOnlog"/> 17 </rules> {event-context:item=Operation}中:后面的“Operation”在生成Logger時會形成名為“Operation”的鍵,我們就可以在代碼中對他賦值,詳見:https://github.com/NLog/NLog/wiki/EventContext-Layout-Renderer。代碼中是這樣: Logger logger = LogManager.GetCurrentClassLogger(); LogEventInfo lei = new LogEventInfo();lei.Properties["Operator_name"] = Opeator_Name;lei.Properties["Operator_Type"] = Operator_Type;lei.Properties["DateTime"] = DateTime.Now;lei.Properties["IP"] = GetClientIPOrAdd.GetIP();lei.Properties["Operation"] = Operation;lei.Level = LogLevel.Info;logger.Log(lei);
3、當我們修改 NLog.config 文件時,要重新編譯解決方案,修改才會起作用。
4、路由規則rule
路由規則主要用于將日志和輸出目標匹配起來,它一般有如下幾個屬性
- name - 記錄者的名字 (允許使用通配符*)
- minlevel - 匹配日志范圍的最低級別
- maxlevel - 匹配日志范圍的最高級別
- level - 匹配的單一日志級別
- levels - 匹配的一系列日志級別,由逗號分隔。
- writeTo - 規則匹配時日志應該被寫入的一系列目標,由逗號分隔。
?
尚未解決的問題:
Logger logger = LogManager.GetLogger(string name);這個方法中的name參數是干什么用的還是沒有搞清楚。
------------補充-----------------------------
查看了源碼 ?這個name參數好像沒什么作用,記錄日志的人,默認是當前類名(fullname),暫且當作一個標記使用。?
?
參考地址:
http://www.cnblogs.com/freeliver54/p/6514686.html
http://www.cnblogs.com/TianFang/p/4003749.html
一個系列講解: http://blog.csdn.net/u010176014/article/details/48655493
官網詳細layout文檔: https://github.com/NLog/NLog/wiki/Layout-Renderers
轉載于:https://www.cnblogs.com/xululublog/p/NLog_douluxu.html
總結
- 上一篇: 详解使用fastboot为Android
- 下一篇: 印度威普罗集团斥资5 亿美元收购云计算解