【问题】
C#中,之前已经实现了用NLog去实现log系统输出:
【已解决】C#中实现Log同时输出内容到文件和文本框(或终端)
且可以自定义输出格式。
以及后续也添加出了不同的level控制:
【已解决】C#中给NLog的多个Target设置不同的Level
此处想要继续添加,实现类似的:
输出内容中,包含当前level字符串的大写的效果:
[INFO] xxx
[DEBUG] xxx
之类的效果。
【解决过程】
1.后来自己参考官网:
自己看到了结果:
Configuration Syntax${level} Alternatively, add padding to align the message. ${pad:padding=5:inner=${level:uppercase=true}} |
所以,就可以自己去设置格式了:
// Step 3. Set target properties //string commonLayout = "${date:format=yyyy-MM-dd HH\\:mm\\:ss} ${logger} ${message}"; //https://github.com/nlog/nlog/wiki/Layout-renderers //https://github.com/nlog/nlog/wiki/Level-Layout-Renderer //string commonLayout = "[${date:format=yyyy-MM-dd HH\\:mm\\:ss}][${level}] ${message}"; string commonLayout = "[${date:format=yyyy-MM-dd HH\\:mm\\:ss}][${pad:padding=5:inner=${level:uppercase=true}}] ${message}"; rtbTarget.Layout = commonLayout; //string curDatetimeStr = DateTime.Now.ToString(); DateTime curDateTime = DateTime.Now; string curDatetimeStr = String.Format("{0:yyyy-MM-dd_HHmmss}", curDateTime); //"2013-06-11_142102" fileTarget.FileName = "${basedir}/" + curDatetimeStr + "_log.txt"; //{'${basedir}/2013-06-11_142102_log.txt'} fileTarget.Layout = commonLayout;
效果如下:
【总结】
NLog真心很好用。
更多的参数设置,参见: