廊坊新闻网-主流媒体,廊坊城市门户

天天微动态丨事件日志(事件日志可以删除吗)

2022-12-11 16:37:42 来源:刀哥百科

事件日志(事件日志可以删除吗)

每当发生一些未捕获的异常时,操作系统都会将异常信息写入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

关键词: 为了能够 可以使用 应用程序