c# - NLog如何写消息源
问题描述
我想记录调用 log 方法的类信息。
Logger Logger = LogManager.GetCurrentClassLogger();
Logger.Info("Start");
我想在日志中看到执行上述代码的类的完整类名。
我在NLog 文档中看到提到了一个source
选项,但不清楚如何使用它以及它是否符合我的要求。
这是我想看到的:
2019-11-11 15:07:19.6935 DefaultLogger MyProject.Program INFO 开始
其中 MyProject.Main 是调用Logger.Info
.
编辑:
这就是我配置记录器的方式:
var config = new LoggingConfiguration();
var allLogs = new NLog.Targets.FileTarget("allLogs");
allLogs.Layout = "${longdate} ${logger} ${uppercase:${level}} ${message}";
allLogs.FileName = basePath + "/${shortdate}.log";
config.LoggingRules.Add(new NLog.Config.LoggingRule("*", LogLevel.Trace, allLogs));
config.AddTarget(allLogs);
LogManager.Configuration = config;
解决方案
callsite布局渲染器似乎符合您的要求:
调用站点(类名、方法名和源信息)。
注意:“NetStandard 1.3 不支持”
句法:
${callsite:className=Boolean:fileName=Boolean:includeSourcePath=Boolean:methodName=Boolean}
供您参考:此处对可用的布局渲染器进行了很好的概述。
顺便说一句:如果你使用LogManager.GetCurrentClassLogger()
,那么${logger}
布局渲染器将渲染创建记录器的类的完全限定类名。
获取以当前正在初始化的类命名的记录器。
推荐阅读
- mysql - Laravel Eloquent:字母顺序,但从小词到句子
- python - Matplotlib 单行子图
- html - overflow-x 隐藏内容(并且不能被覆盖)
- scala - 如何使用akka中的Source读取二进制avro fileData?
- javascript - 来自 nodejs 服务器的请求过多导致“连接 EADDRNOTAVAIL”
- google-forms - 如何在谷歌表单中创建定时测验
- amazon-web-services - AWS Lambda Nodejs 中无法导入模块错误
- javascript - 在模板内调用角度服务方法时如何修复“无法读取未定义的属性'...'”
- c++ - 有没有办法接受某些输入的第一个字母并检查它是否在某个列表中?
- javascript - 单击时防止触发焦点事件