NLog将事件日志目标更改为Application以外的其他对象

时间:2019-05-21 13:17:34

标签: c# nlog event-viewer

我将目标日志从“应用程序”更改为“ xxxx”。 我使用powersheel删除了Source 并在“ xxxx”下创建它。 当我编写事件时,它不会出现在任何地方。

target = LogManager.Configuration.FindTargetByName("eventlog");
mode = config.RUN_MODE;
LogManager.Configuration.RemoveTarget("console");
((NLog.Targets.EventLogTarget)target).Log = "xxxx";
LoggingConfiguration loggingConfiguration = new LoggingConfiguration();
var asyncFileTarget = new AsyncTargetWrapper(target);
loggingConfiguration.AddTarget("eventlog", asyncFileTarget);
LogManager.Configuration = loggingConfiguration;
LogManager.Configuration.AddRule(LogLevel.Info, LogLevel.Fatal, target, mode, true);
LogManager.ReconfigExistingLoggers();

我使用Powershell删除并添加了新的日志和源(已创建“ xxxx”日志):

Remove-EventLog -Source "mySource" 
New-EventLog -LogName xxxx -Source "mySource code here

1 个答案:

答案 0 :(得分:0)

创建新的事件日志时,服务器需要重新启动。此外,还要确保该帐户具有对事件日志的写访问权限。

同样重要的是,将Configuration属性分配给LogManager将激活配置,因此建议您首先添加规则。

所以不是:

LogManager.Configuration = loggingConfiguration;
LogManager.Configuration.AddRule(LogLevel.Info, LogLevel.Fatal, target, mode, true);

但是:

loggingConfiguration.AddRule(LogLevel.Info, LogLevel.Fatal, target, mode, true);
LogManager.Configuration = loggingConfiguration; // activates config

如果仍有问题,我建议您遵循NLog Troubleshooting guide