【问题】
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真心很好用。
更多的参数设置,参见: