首页 > 解决方案 > 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;

标签: c#.netnlog

解决方案


callsite布局渲染器似乎符合您的要求:

调用站点(类名、方法名和源信息)。

注意:“NetStandard 1.3 不支持”

句法:

${callsite:className=Boolean:fileName=Boolean:includeSourcePath=Boolean:methodName=Boolean}

供您参考:此处对可用的布局渲染器进行了很好的概述。


顺便说一句:如果你使用LogManager.GetCurrentClassLogger(),那么${logger}布局渲染器将渲染创建记录器的类的完全限定类名。

获取以当前正在初始化的类命名的记录器。


推荐阅读