NLog, как написать источник сообщения - PullRequest
2 голосов
/ 11 ноября 2019

Я хотел бы записать информацию о классе, который вызвал метод log.

Logger Logger = LogManager.GetCurrentClassLogger();
Logger.Info("Start");

Я хотел бы видеть в журнале полное имя класса, который выполняет приведенный выше код.

Я видел в документации NLog , где упоминается опция source, но не совсем понятно, как ее использовать и соответствует ли она моим требованиям.

Эточто я хотел бы увидеть:

2019-11-11 15: 07: 19.6935 DefaultLogger MyProject.Program INFO Start

где MyProject.Main - полное имя классакласса, который вызывает Logger.Info.

EDIT:

Вот как я настроил регистратор:

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;

1 Ответ

2 голосов
/ 11 ноября 2019

средство визуализации макета места вызова , кажется, соответствует вашему требованию:

Сайт вызова (имя класса, имя метода и информация об источнике).

Mind: "Не поддерживается в NetStandard 1.3"

Синтаксис:

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

Для вашей информации: существует превосходный обзор доступных средств визуализации макетов здесь .


Кстати: если вы используете LogManager.GetCurrentClassLogger(), то средство визуализации макета ${logger} будет полностью отображатьсяполное имя класса, в котором был создан регистратор.

Получает регистратор, названный по имени инициализируемого в настоящее время класса.

...