2011-04-28 56 views
3

我想在插件中使用NLog並使用配置API來配置它。但是,由於LogManager是靜態的,我怎樣才能做到這一點,而不會干擾正在做同樣事情的其他插件?如何在插件中使用NLog

我看到使用配置API的示例涉及完全替換LogManager.Configuration。我可以嘗試修改現有的配置,但我不確定這是否是線程安全的。

+0

您想要配置從插件日誌?我認爲這將取決於主要應用程序。 – Amy 2011-04-28 21:03:32

+0

@Inuyasha在這種情況下,我希望每個插件分別配置日誌記錄。你也可以想象一個你沒有控制權的主應用程序不提供日誌服務,但你不想幹涉其他使用NLog的插件。 – 2011-04-28 23:31:35

回答

1

你有沒有嘗試過這樣的事情:

// 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.");