事件日志(事件日志可以删除吗)
每当发生一些未捕获的异常时,操作系统都会将异常信息写入Windows事件日志,可以通过Windows事件查看器查看该日志,如下图所示:
本文将讨论如何以编程方式将日志记录到Windows事件日志中。
(资料图片)
安装事件日志中记录数据。NET Core添加到Windows事件日志中,您可以使用Nuget来安装 Microsoft。Extensions.logging.eventlog包。您可以使用Visual Studio中的NuGet包管理器可视面板或NuGet包管理器控制台命令行界面。输入以下命令:
Install-PackageMicrosoft.Extensions.Logging.EventLog
按事件记录日志要将日志写入Windows事件日志,可以使用以下代码:
EventLogeventLog=newEventLog();eventLog.Source="MyEventLogTarget";eventLog.WriteEntry("Thisisatestmessage.",EventLogEntryType.Information);
通过事件日志清除空日志
要清除空所有windows日志,可以使用以下代码:
EventLogeventLog=newEventLog();eventLog.Source="MyEventLogSource";eventLog.Clear();
清除空所有windows事件日志,那么如何清除某一类日志呢?例如:MyEventLogTarget,修改代码如下:
if(EventLog.Exists("MyEventLogTarget")){EventLog.Delete("MyEventLogTarget");}
阅读Windows事件日志您可以使用foreach迭代条目以获取所有日志记录。
EventLogeventLog=newEventLog();eventLog.Log="MyEventLogTarget";foreach(EventLogEntryentryineventLog.Entries){//Writeyourcustomcodehere}
使用NLog将日志记录到Windows事件日志中。要使用NLog将日志记录到windows事件日志,您需要安装NLog。带有NuGet的WindowsEventLog。这个包封装了连接事件日志的复杂细节,所以你只需要像平常一样操作NLog。
创建ILogManager接口以下接口方法用于记录不同级别的日志(信息、警告、调试或错误)
publicinterfaceILogManager{voidLogInformation(stringmessage);voidLogWarning(stringmessage);voidLogDebug(stringmessage);voidLogError(stringmessage);}
创建NLogManager类接下来,使用以下代码从ILogManager接口派生一个NLogManager类:
publicclassNLogManager:ILogManager{privatestaticNLog.ILoggerlogger=LogManager.GetCurrentClassLogger();publicvoidLogDebug(stringmessage){thrownewNotImplementedException();}publicvoidLogError(stringmessage){logger.Error(message);}publicvoidLogInformation(stringmessage){thrownewNotImplementedException();}publicvoidLogWarning(stringmessage){thrownewNotImplementedException();}}
使用LogError方法为了简单起见,我只实现LogError方法,其他三个方法你可以自己实现。为了了解如何通过NLog将日志记录到Windows事件日志中,请按如下方式修改代码:
publicvoidLogError(stringmessage){Loggerlogger=LogManager.GetLogger("EventLogTarget");varlogEventInfo=newLogEventInfo(LogLevel.Error,logger.Name,message);logger.Log(logEventInfo);}
请注意,我在上面创建了一个名为EventLogTarget的EventLog,然后在LogEventInfo的构造函数中传递了日志级别、日志记录器的名称以及要记录的日志信息。
将Nlog配置为记录到Windows事件日志为了能够配置Nlog以编程方式通过EventLog记录日志,您可以使用以下代码。
varconfig=newNLog.Config.LoggingConfiguration();varlogEventLog=newNLog.Targets.EventLogTarget("EventLogTarget");config.AddRule(NLog.LogLevel.Info,NLog.LogLevel.Error,logEventLog);NLog.LogManager.Configuration=config;
完整的NLogManager示例下面是NLogManager的完整代码示例,供大家参考。
publicclassNLogManager:ILogManager{privatestaticNLog.ILoggerlogger=LogManager.GetCurrentClassLogger();publicvoidLogDebug(stringmessage){logger.Debug(message);}publicvoidLogError(stringmessage){Loggerlogger=LogManager.GetLogger("EventLogTarget");varlogEventInfo=newLogEventInfo(LogLevel.Error,logger.Name,message);logger.Log(logEventInfo);}publicvoidLogInformation(stringmessage){logger.Info(message);}publicvoidLogWarning(stringmessage){logger.Warn(message);}}
为了能够在控制器中使用NLogManager,还需要在Startup下的ConfigureServices方法中注入它。代码如下:
services.AddSingleton();
当您打开Windows事件查看器时,您将看到错误信息已成功记录在此处。请参考以下截图:
Windows事件日志通常用于记录系统事件、网络流量以及与安全和性能相关的信息等。您还可以将应用程序日志记录到Windows事件日志中。一般来说,如果你的程序只在Windows上运行,那么将应用程序信息记录到Windows事件日志中是一个非常好的选择。
翻译链接:https://www . infoworld . com/article/3598750/how-to-log-data-to-the-windows-event-log-in-cs harp . html