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

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

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

每当发生一些未捕获的异常时,操作系统都会将异常信息写入Windows事件日志,可以通过Windows事件查看器查看该日志,如下图所示:

本文将讨论如何以编程方式将日志记录到Windows事件日志中。

安装事件日志

中记录数据。NET Core添加到Windows事件日志中,您可以使用Nuget来安装Microsoft。Extensions.logging.eventlog包,请使用Visual Studio中的NuGet包管理器可视面板或使用NuGet包管理器控制台命令行界面。输入以下命令:

Install-Package Microsoft.Extensions.Logging.EventLog

按事件记录日志

要将日志写入Windows事件日志,可以使用以下代码:

EventLog eventLog = new EventLog();eventLog.Source = \"MyEventLogTarget\";eventLog.WriteEntry(\"This is a test message.\", EventLogEntryType.Information);

通过事件日志清除空日志

要清除空所有windows日志,可以使用以下代码:

EventLog eventLog = new EventLog();eventLog.Source = \"MyEventLogSource\";eventLog.Clear();

清除空所有windows事件日志,那么如何清除某一类日志呢?例如:MyEventLogTarget,修改代码如下:

if (EventLog.Exists(\"MyEventLogTarget\")){   EventLog.Delete(\"MyEventLogTarget\");}

阅读Windows事件日志

您可以使用foreach迭代条目以获取所有日志记录。

EventLog eventLog = new EventLog();eventLog.Log = \"MyEventLogTarget\";foreach (EventLogEntry entry in eventLog.Entries){    //Write your custom code here}

使用NLog将日志记录到Windows事件日志中。

要使用NLog将日志记录到windows事件日志,您需要安装NLog。带有NuGet的WindowsEventLog。这个包封装了连接事件日志的复杂细节,所以你只需要像平常一样操作NLog。

创建ILogManager接口

以下接口方法用于记录不同级别的日志(信息、警告、调试或错误)

    public interface ILogManager    {        void LogInformation(string message);        void LogWarning(string message);        void LogDebug(string message);        void LogError(string message);    }

创建NLogManager类

接下来,使用以下代码从ILogManager接口派生一个NLogManager类:

    public class NLogManager : ILogManager    {        private static NLog.ILogger logger = LogManager.GetCurrentClassLogger();        public void LogDebug(string message)        {            throw new NotImplementedException();        }        public void LogError(string message)        {            logger.Error(message);        }        public void LogInformation(string message)        {            throw new NotImplementedException();        }        public void LogWarning(string message)        {            throw new NotImplementedException();        }    }

使用LogError方法

为了简单起见,我只实现LogError方法,其他三个方法可以自己实现。为了了解如何通过NLog将日志记录到Windows事件日志中,请按如下方式修改代码:

    public void LogError(string message)    {        Logger logger = LogManager.GetLogger(\"EventLogTarget\");        var logEventInfo = new LogEventInfo(LogLevel.Error,logger.Name, message);        logger.Log(logEventInfo);    }

请注意,我在上面创建了一个名为EventLogTarget的EventLog,然后在LogEventInfo的构造函数中传递了日志级别、日志记录器的名称以及要记录的日志信息。

将Nlog配置为记录到Windows事件日志

为了能够配置Nlog以编程方式通过EventLog记录日志,您可以使用以下代码。

var config = new NLog.Config.LoggingConfiguration();var logEventLog = new NLog.Targets.EventLogTarget(\"EventLogTarget\");config.AddRule(NLog.LogLevel.Info, NLog.LogLevel.Error, logEventLog);NLog.LogManager.Configuration = config;

完整的NLogManager示例

下面是NLogManager的完整代码示例,供大家参考。

    public class NLogManager : ILogManager    {        private static NLog.ILogger logger =LogManager.GetCurrentClassLogger();        public void LogDebug(string message)        {            logger.Debug(message);        }        public void LogError(string message)        {            Logger logger = LogManager.GetLogger(\"EventLogTarget\");            var logEventInfo = new LogEventInfo(LogLevel.Error,logger.Name, message);            logger.Log(logEventInfo);        }        public void LogInformation(string message)        {            logger.Info(message);        }        public void LogWarning(string message)        {            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

以上就是由优质生活领域创作者 嘉文社百科网小编 整理编辑的,如果觉得有帮助欢迎收藏转发~