文章目录[隐藏]
事件日志(事件日志可以删除吗)
每当发生一些未捕获的异常时,操作系统都会将异常信息写入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
以上就是由优质生活领域创作者 嘉文社百科网小编 整理编辑的,如果觉得有帮助欢迎收藏转发~
本文地址:https://www.jwshe.com/573372.html,转载请说明来源于:嘉文社百科网
声明:本站部分文章来自网络,如无特殊说明或标注,均为本站原创发布。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。分享目的仅供大家学习与参考,不代表本站立场。