如何将日志记录到 Windows事件日志 中

每当出现一些未捕获异常时,操作系统都会将异常信息写入到 Windows 事件日志 中,可以通过 Windows 事件查看器 查看,如下图:

这篇文章将会讨论如何使用编程的方式将日志记录到 Windows 事件日志 中。

安装 EventLog

要想在 .NET Core 中记录数据到 Windows 事件日志中,可以用 Nuget 安装一下 Microsoft.Extensions.Logging.EventLog 包,用 Visual Studio 中的 NuGet Package Manager 可视化面板 或者 使用 NuGet Package Manager Console 命令行界面都可以,输入命令如下:


Install-Package Microsoft.Extensions.Logging.EventLog

通过 EventLog 记录日志

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


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

通过 EventLog 清空日志

为了能够实现清空所有 windows 日志,可以使用如下代码:


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

Clear 是清空所有的 windows 事件日志,那如何清除某一个类别的日志呢? 比如说:MyEventLogTarget,修改代码如下:


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

读取 Windows 事件日志 记录

可以使用 foreach 迭代 Entries 来获取所有的日志记录。


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

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

要想使用 NLog 将日志记录到 windows事件日志 中,你需要用 NuGet 安装一下 NLog.WindowsEventLog ,这个包封装了连接 EventLog 错综复杂的细节,所以你只需要像平时用 NLog 一样的操作即可。

创建 ILogManager 接口

下面的接口方法用于记录不同级别的日志 (information, warning, debug, or error)


    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 的构造函数中传递 log级别,logger的名字 以及 需要记录的 log 信息。

配置 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);
        }
    }

为了能够在 Controller 中使用 NLogManager,还需要在 Startup 下的 ConfigureServices 方法中进行注入,代码如下:


services.AddSingleton<ILogManager, NLogManager>();

当你打开 Windows 事件查看器,就会看到错误信息已成功记录到这里了,参考如下截图:

Windows事件日志 通常用于记录 系统事件,网络流量和诸如安全,性能相关的信息 等等,你也可以将应用程序的日志记录到 Windows事件日志中,通常来说,如果你的程序仅仅是跑在 windows 上,那么将应用程序信息记录到 Windows事件日志 中是一个非常不错的选择。

译文链接:https://www.infoworld.com/article/3598750/how-to-log-data-to-the-windows-event-log-in-csharp.html

一线码农
关注 关注
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
jul4nt:Java日志处理程序将日志记录发布到Windows事件日志
05-10
日志记录发布到 如何使用? 该库在Maven Central上可用。 您可以通过将库添加到pom.xml dependencies部分来开始使用该库: <!-- ... --> < groupId>com.github.nikolaybespalov</ groupId> ...
Powershell使用WINDOWS事件日志记录程序日志
01-20
这样做没有什么问题,但是使用WINDOWS提供系统内部日志会更加简单。 如果你有管理权限,你可以随时创建一个新的日志: 代码如下:New-EventLog -LogName myLog -Source JobDue, JobDone, Remark 该命令创造了一个名...
如何向系统写入Event Log
小鸟的窝
06-30 4537
需求来源:记载Application的错误日志,写Event Log到System。Event Log机制分析:解决方案:1:.NET部署WebService写Event Log到System    .NET提供了功能强大的EventLog类,可以很方便的写入,WebService集式部署,管理也很方便。    可是不足的是WebService权限的问题,每次写Event Log需要注册Ev
.Net 日志系统-Windows日志
每天学习一点点
01-09 1176
Windows日志的查看方法: .Net Core程序记录日志Windows日志,下面用代码来演示如何实现: 基于.Net Core WebApi 3.1程序 1.NuGet应用程序集:Microsoft.Extensions.Logging.EventLog 2.依赖注入: 在Startup.cs文件的ConfigureServices类,将EventLog注入到服务。 //注入EventLog service...
批量获取windows日志_Azure 日志管理(Log Analytics)(4)-获取Windows 系统日志
weixin_34959771的博客
01-22 275
*本文下述内容均以AZURE CLI 2.x为例。操作环境是Windows10. *本文实验在Azure国区完成在前一章,我们获得了windows VM的指标信息, 这一章,我们来讲讲如何获得windows 系统日志。在同样的位置 点击点击Workspace里的"Advanced settings"点击Data->Windows Event logs,这时 输入 system ,选择加...
VC++记录Windows系统日志源码
06-20
将信息记录到系统日志的简单测试源码,仅供初学者参考,内容比较简单,就几个函数调用,上传供以后需要用到时候可以下载来看看。
使用ELMAH记录Windows事件日志时出错
04-08
使用ELMAH记录Windows事件日志时出错
windows登录日志统一记录
03-25
通过批处理查询当前3389端口筛选内容到文本,再通过任务计划通过事件触发马上执行,每台服务器都会产生一个ip独立的文件,代码包含登录和退出的登记,贼好用
MFC 获取windows系统日志
03-03
API获取windows系统日志,以及MFC的基本DEMO
loginsight跨平台日志查看工具
等死老鼠的瞎猫
09-02 733
日志,是研发的日常工作,相信你已经从各种报错日志查出许多BUG,但也被冗长、复杂的日志困扰过无数次。 在日常工作,我也经常痛苦于看日志,一般是这些日志长得面目狰狞: 日志文件太大,打开都很困难 日志文件里的信息错综复杂,各个模块的时序纠缠不清 日志搜集引擎导出的文件被切割成多个文件,很难联系上下文来看 不仅日志看的不顺眼,看日志的工具也不蹭手: 搜索完关键词,上下跳几次,就忘记要干什么了(我是谁,我在哪,我在干嘛?) 想按某个关键字过滤日志,有的工具还不支持 刚刚自己分析得头头是道,一叫人过来就
windows日志分析-Log Parser等工具使用
李安北的博客
05-24 9000
Windows 主要有以下三类日志记录系统事件:应用程序日志、系统日志和安全日志 系统日志:%SystemRoot%\System32\Winevt\Logs\System.evtx 记录操作系统组件产生的事件,主要包括驱动程序、系统组件和应用软件的崩溃以及数据丢失错误等。 应用程序日志:%SystemRoot%\System32\Winevt\Logs\Application.evtx 包含由应用程序或系统程序记录事件,主要记录程序运行程序方面的事件。 安全日志:%SystemRoot%\Syste
Windows服务器自动化抓取log并上传
ganmaotong的博客
10-21 3041
最近因为项目有日志审计的需要,需要把多个windows服务器的log每天抓取并自动上传到指定的服务器。经过查阅相关知识之后,决定采用bat脚本+定时计划任务的方式来实现。 一、Window事件日志简介 Windows系统日志记录系统硬件、软件和系统问题的信息,同时还可以监视系统发生的事件。用户可以通过它来检查错误发生的原因,或者寻找受到攻击时攻击者留下的痕...
Windows Service添加日志 Logger
qq_41533659的博客
07-27 775
在vs有时我们写好了Logger,但是进入Logger却没有保存下来,可以看看配置文件配置节点是否配置完成: <?xml version="1.0" encoding="utf-8"?> <configuration> <configSections> **<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />**
C++实现log日志系统
残花织梦的博客
07-15 4291
转载地址:https://blog.csdn.net/laobai1015/article/details/80004504 1.log日志的作用 在软件开发周期,不管是前台还是后台,系统一般会采用一个持久化的日志系统来记录运行情况。 在代码嵌入log代码信息,主要记录下列信息: (1)记录系统运行异常信息。 (2)记录系统运行状态信息。 (3)记录系统运行性能指标。 通过对上...
Windows EventLog
huanongying131的博客
12-14 2092
转: https://github.com/sgentle/evtail/blob/master/evtail.c #include &lt;windows.h&gt; #include &lt;stdio.h&gt; #include &lt;strings.h&gt; #include &lt;time.h&gt; #define BUFFER_SIZE 1024*4 #define R...
windows server服务器查看操作记录
guijianchouxyz的博客
02-19 5505
windows server 2008 r2查看操作记录 看计算机哪天运行过。 在系统盘下的Windows\Tasks文件夹下找到文件SCHEDLGU.TXT。 里面的内容为: 看你最近打开过什么文件(非程序)或者文件夹 开始–>运行–>recent ...
怎么用windows日志服务记录其他程序的日志
最新发布
06-02
Windows日志服务可以用来记录其他程序的日志,只需要在其他程序调用Windows日志服务的API即可。 下面是一个简单的示例,假设我们有一个名为MyApp的程序,需要记录日志Windows日志服务: 1. 在Windows日志服务创建事件源:可以使用EventCreate工具或者PowerShell命令来创建事件源。例如: ```powershell New-EventLog -LogName Application -Source MyApp ``` 2. 在MyApp程序引入System.Diagnostics命名空间,该命名空间包含了EventLog类库。 ```csharp using System.Diagnostics; ``` 3. 在MyApp程序创建EventLog对象,该对象用于记录日志。需要设置事件源和日志名称等参数。 ```csharp EventLog eventLog = new EventLog(); eventLog.Source = "MyApp"; eventLog.Log = "Application"; ``` 4. 在MyApp程序记录日志,可以调用EventLog对象的WriteEntry方法。例如: ```csharp eventLog.WriteEntry("Hello, world!", EventLogEntryType.Information); ``` 这样就可以将日志信息记录Windows日志服务了。需要注意的是,记录日志需要以管理员权限运行MyApp程序,否则可能会出现权限不足的错误。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • 轻量级ORM框架——第二篇:Dapper中的一些复杂操作和inner join应该注意的坑 13616
  • 对 JsonConvert 的认识太肤浅了,终于还是遇到了问题 13525
  • 使用强大的可视化工具redislive来监控我们的redis,别让自己死的太惨~~~ 10205
  • 如何剔掉 sql 语句中的尾巴,我用 C# 苦思了五种办法 7272
  • 如何使用 C# 中的 Tuple 7016

分类专栏

  • windbg 4篇
  • 技术杂谈 8篇

最新评论

  • 记一次 .NET某质量检测中心系统 崩溃分析

    全栈小5: 文章结构严谨,每次阅读都能收获知识,感谢博主的分享,期待博主继续更新高质量文章,支持!【记一次 .NET某质量检测中心系统 崩溃分析,博主这篇文章,值得一看】

  • 记一次 .NET某质量检测中心系统 崩溃分析

    0仰望星空007: 博主文章写的十分细致,结构严谨。感谢博主分享

  • 对 JsonConvert 的认识太肤浅了,终于还是遇到了问题

    卑微zai: 大佬,如果我想序列化一个类,但是类中有一个变量我不想显示,但是这个类我没有办法对其增加忽略特性,要怎么处理才好

  • C# 中的 is 真的是越来越强大,越来越语义化

    彩色电暖: 一线码农 is 牛啤

  • 记一次 .NET 某拍摄监控软件 卡死分析

    金士顿: nice,学习了

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • 记一次 .NET某工厂报警监控设置 崩溃分析
  • 记一次 .NET某游戏币自助机后端 内存暴涨分析
  • 记一次 .NET某工控视觉自动化系统 卡死分析
2024年32篇
2023年64篇
2022年44篇
2021年120篇
2020年89篇
2017年238篇
2016年2篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

深圳SEO优化公司陇南网页制作报价中山优化连云港seo排名太原网站优化推广报价大连网站推广报价拉萨关键词排名包年推广价格镇江百度标王公司丽江网站优化按天扣费多少钱淄博网站改版价格长沙网站优化软件报价绍兴模板网站建设多少钱衡阳企业网站改版公司漯河设计公司网站多少钱观澜企业网站设计多少钱东莞建站大丰百度关键词包年推广红河百姓网标王推广公司内江SEO按天扣费推荐廊坊网络营销报价诸城百度seo哪家好庆阳建网站公司甘南关键词按天收费报价平顶山seo网站优化价格哈尔滨阿里店铺托管报价锦州优化价格龙华网站制作设计哪家好铁岭网站设计安阳营销型网站建设推荐玉树关键词按天收费公司固原网站优化软件哪家好歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化