Как использовать NLog в плагине - PullRequest
3 голосов
/ 28 апреля 2011

Я хотел бы использовать NLog в плагине и использовать API конфигурации для его настройки. Однако, поскольку LogManager является статическим, как я могу сделать это, не мешая другим плагинам, которые делают то же самое?

Примеры использования API конфигурации, которые я вижу, включают полную замену LogManager.Configuration. Я мог бы попытаться изменить любую существующую конфигурацию, но я не уверен, что она будет поточно-ориентированной.

Ответы [ 2 ]

1 голос
/ 22 августа 2011

Вы пробовали что-то вроде этого:

// This could got into a static constructor somewhere in the plugin to make sure it happens early
LoggingConfiguration config = LogManager.Configuration;
ColoredConsoleTarget consoleTarget = new ColoredConsoleTarget();
config.AddTarget("myplugin", consoleTarget);
LoggingRule rule = new LoggingRule("myplugin", LogLevel.Debug, consoleTarget);
config.LoggingRules.Add(rule);

// Whenever my plugin creates a logger it'll obtain it like this
var log = LogManager.GetLogger("myplugin");
log.Error("Some message.");
0 голосов
/ 29 апреля 2018

NLog на самом деле имеет нестатический режим, который подходит для плагинов и параллельного запуска модульных тестов.

LogManager - это интерфейс вокруг глобальной LogFactory.Но вы можете создать свой собственный локальный LogFactory для настройки вашей локальной конфигурации.Он будет работать бок о бок с глобальной LogFactory.

// This could got into a static constructor somewhere in the plugin to make sure it happens early
LogFactory logFactory = new LogFactory();
LoggingConfiguration config = new LoggingConfiguration();
ColoredConsoleTarget consoleTarget = new ColoredConsoleTarget();
config.AddTarget("mypluginconsole", consoleTarget);
config.AddRuleForAllLevels(consoleTarget, "myplugin")
logFactory.Configuration = config;

// Whenever my plugin creates a logger it'll obtain it like this
var log = logFactory.GetLogger("myplugin");
log.Error("Some message.");

https://github.com/NLog/NLog/wiki/Configure-component-logging

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...