C#操作windows事件日志项

 1 /// <summary>
 2     /// 指定事件日志项的事件类型
 3     /// </summary>
 4     public enum EventLogLevel
 5     {
 6         /// <summary>
 7         /// 错误事件。它指示用户应该知道的严重问题(通常是功能或数据的丢失)。
 8         /// </summary>
 9         Error = 1,
10         /// <summary>
11         /// 警告事件。它指示并不立即具有重要性的问题,但此问题可能表示将来会导致问题的条件。
12         /// </summary>
13         Warning = 2,
14         /// <summary>
15         /// 信息事件。它指示重要、成功的操作。
16         /// </summary>
17         Information = 4,
18         /// <summary>
19         /// 成功审核事件。它指示当审核访问尝试成功(例如成功登录)时发生的安全事件。
20         /// </summary>
21         SuccessAudit = 8,
22         /// <summary>
23         /// 失败审核事件。它指示当审核访问尝试失败(例如打开文件的尝试失败)时发生的安全事件。
24         /// </summary>
25         FailureAudit = 16,
26     }

指定事件日志项的事件类型

  1 public static class WebUtil
  2     {
  3         /// <summary>
  4         /// 写日志信息
  5         /// </summary>
  6         /// <param name="Message">日志信息</param>
  7         public static void WriteLog(string Message, EventLogLevel logLevel = EventLogLevel.Information)
  8         {
  9             string sourceName = "DemoEventLog";//Application-应用程序日志
 10             WriteCustomLog(sourceName, Message, logLevel);
 11         }
 12         /// <summary>
 13         /// 写异常日志
 14         /// </summary>
 15         /// <param name="exp">异常信息</param>
 16         public static void WriteLog(Exception exp, EventLogLevel logLevel = EventLogLevel.Error)
 17         {
 18             string filepath = string.Empty;
 19             try
 20             {
 21                 filepath = HttpContext.Current.Request.AppRelativeCurrentExecutionFilePath;
 22             }
 23             catch (Exception)
 24             {
 25
 26             }
 27             String Message = string.Format("\n\nURL:\n {0}\n\nMESSAGE:\n {1}\n\nSTACK TRACE:\n {2}", filepath, exp.Message, exp.StackTrace);
 28             string sourceName = "DemoEventLog";//Application-应用程序日志
 29             WriteCustomLog(sourceName, Message, logLevel);
 30         }
 31         /// <summary>
 32         /// 写异常日志
 33         /// 设置:因为系统日志的操作是有权限控制的,所以我们还要把对系统日志操作的权限赋给asp.net用户,
 34         /// 方法如下:“开始->运行”,输入命令,“regedt32”,找到“System->CurrentControlSet->Services->Eventlog”,
 35         /// 选择“安全->权限->添加”,然后找到本机的“AspNet”用户,加进来并且给读取权限就好了,
 36         /// 加进来后目录中会多一个“aspnet_wp account”
 37         /// 系统出错后,会自动将出错信息记录到系统日志中,你可以在“开始->程序->管理工具->事件查看器”中发现一个新的项目“TownLog”,这便是记录出错信息的。
 38         /// </summary>
 39         /// <param name="message">日志信息</param>
 40         private static void WriteCustomLog(string sourceName, string message, EventLogLevel logLevel = EventLogLevel.Information)
 41         {
 42             try
 43             {
 44                 string logName = sourceName + "Log";
 45                 if (!(EventLog.SourceExists(sourceName)))
 46                 {
 47                     EventLog.CreateEventSource(sourceName, logName);
 48                 }
 49
 50                 using (EventLog eventLog = new EventLog(logName))
 51                 {
 52                     eventLog.Source = sourceName;
 53                     eventLog.WriteEntry(message, (EventLogEntryType)logLevel);
 54                 }
 55             }
 56             catch (Exception ex)
 57             {
 58                 WriteApplicationLog(ex.ToString());
 59             }
 60         }
 61         /// <summary>
 62         /// 记录应用程序日志
 63         /// </summary>
 64         /// <param name="message"></param>
 65         public static void WriteApplicationLog(string message)
 66         {
 67             try
 68             {
 69                 string sourceName = "Application";
 70
 71                 if (!(EventLog.SourceExists(sourceName)))
 72                 {
 73                     EventLog.CreateEventSource(sourceName, sourceName);
 74                 }
 75
 76                 using (EventLog eventLog = new EventLog(sourceName))
 77                 {
 78                     eventLog.Source = sourceName;
 79                     eventLog.WriteEntry(message, EventLogEntryType.Error);
 80                 }
 81             }
 82             catch (Exception ex)
 83             {
 84                 throw ex;
 85             }
 86         }
 87         /// <summary>
 88         /// 获取客户端IP地址(无视代理)
 89         /// </summary>
 90         /// <returns>若失败则返回回送地址</returns>
 91         public static string GetClientIP()
 92         {
 93             string userHostAddress = HttpContext.Current.Request.UserHostAddress;
 94             if (string.IsNullOrEmpty(userHostAddress))
 95             {
 96                 userHostAddress = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
 97             }
 98             //最后判断获取是否成功,并检查IP地址的格式(检查其格式非常重要)
 99             if (!string.IsNullOrEmpty(userHostAddress) && IsIP(userHostAddress))
100             {
101                 return userHostAddress;
102             }
103             return "127.0.0.1";
104         }
105
106         /// <summary>
107         /// 检查IP地址格式
108         /// </summary>
109         /// <param name="ip"></param>
110         /// <returns></returns>
111         public static bool IsIP(string ip)
112         {
113             return System.Text.RegularExpressions.Regex.IsMatch(ip, @"^((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)$");
114         }
115         //public static string GetClientIP(System.Web.UI.Page page)
116         //{
117         //    string ipAddress = "";
118         //    if (page.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] == null)
119         //    {
120         //        ipAddress = page.Request.ServerVariables["Remote_Addr"];
121         //    }
122         //    else
123         //    {
124         //        ipAddress = page.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
125         //    }
126         //    return ipAddress;
127         //}
128
129         //public static string GetIP(this Controller ctrl)
130         //{
131         //    string ip;
132         //    if (ctrl.HttpContext.Request.ServerVariables["HTTP_VIA"] != null)
133         //    {
134         //        ip = ctrl.HttpContext.Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString();
135         //    }
136         //    else
137         //    {
138         //        ip = ctrl.HttpContext.Request.ServerVariables["REMOTE_ADDR"].ToString();
139         //    }
140         //    return ip;
141         //}
142     }

WebUtil

时间: 2024-08-07 18:34:23

C#操作windows事件日志项的相关文章

使用EventLog类写Windows事件日志

在程序中经常需要将指定的信息(包括异常信息和正常处理信息)写到日志中.在C#3.0中可以使用EventLog类将各种信息直接写入Windows日志.EventLog类在System.Diagnostics命名空间中.我们可以在“管理工具” > "事件查看器“中可以查看我们写入的Windows日志,如下图所示: 下面是一个使用EventLog类向应用程序(Application)写入日志的例子,日志类型使用EventLogEntryType枚举类型指定. Code highlighting

为什么要使用日志管理?-syslog和Windows事件日志

为什么要使用日志管理?syslog和Windows事件日志 日志管理 - 确保网络安全的先决条件日志给予您有关网络活动的第一手信息.日志管理确保日志中隐藏的网络活动数据转换为有意义的可操作的安全信息.日志管理是网络安全管理员为保护网络而要完成的首要任务.日志管理包括收集.安全存储.规范化.分析.生成报表和告警.日志收集· 日志收集必须是非侵入性的.· 需要从网络中出现的不同设备.服务器和应用程序组中收集日志.· 最好以无代理的方式收集日志.在某些网络环境中,以使用代理的方式进行的日志收集应以可选

使用rsync备份Windows事件日志

使用rsync备份Windows事件日志 Windows版软件:cwRsyncServer 安装比较简单一直下一步即可,输入到创建账号页面的时候可以自己设置一个密码. 服务器端:cwRsyncServer_4.0.5_Installe.zip 客户端:cwRsync_4.0.5_Installer.zip 由于特殊原因需要收集Windows的Application.Security.Setup.System事件日志,而事件日志的位置是在C:\Windows\System32\winevt\Log

Windows事件日志查询案例

1.查询本机事件日志名称 Get-EventLog -List 2.查询2018年1月4日后系统日志中的错误日志 Get-EventLog -LogName System -EntryType Error -After 2018-1-4 3.查看单个事件日志详细信息(index的值为事件日志的序号) Get-EventLog -LogName System | Where-Object {$_.index -eq 2677} | Select-Object -Property * 4.查询指定日

Windows事件日志写入SQL Server并PowerBI统计分析

在这里我准备了2台系统,一个Windows Server 2012 R2的域控服务器DC01,一台SQL on CentOS7的SQL数据库服务器 首先我使用SQL Manager Studio连接到SQL数据库服务器创建需要存放Windows转发事件日志的数据库"EventCollections" CREATE DATABASE EventCollections GO USE EventCollections GO -- the table name loosely relates

深入解密.NET(Windows事件日志)

测试 using System; using System.Diagnostics; namespace WindowsConsoleApp { //测试 public class EnventLogHelper { private EventLog log; public EnventLogHelper() { log = new EventLog();//默认写应用程序日志 } public EnventLogHelper(string name) { log = new EventLog(

SQL Server 无法生成 FRunCM 线程。请查看 SQL Server 错误日志和 Windows 事件日志

1.IP地址配置不正确: 打开 Microsoft SQL Server 2005配置工具下的SQL Server Configuration Manager,选择MSSQLSERVER协议, 然后双击右边窗口的TCP/IP,在弹出窗口中检查IP配置. 2.可能是因为VIA协议启用造成的.解决方法如下: 另外,管理员密码修改也会造成sqlserver服务无法启动.解决方法如下: 打开 Microsoft SQL Server 2005配置工具下的SQL Server Configuration

EventLog实现事件日志操作

选中”我的电脑”,在其右键菜单中选择“管理”,在打开的对话框中包括了如下图所示的“日志”信息: 选中其中的某一条日志,可以看到如下的详细信息: 我们应该如何通过写代码的方式向其中添加“日志”呢? 在操作之前,先明确几个概念: 1:事件日志名(logName):“事件查看器”中的每一项,如“应用程序”.“Internet Explorer”.“安全性”和“系统”都是日志(严格地说是日志的显示名字) 2:事件源:列表中的“来源”,创建时和事件日志相关联: 3:事件类型:包括“信息”.“错误”等: 下

Windows安全事件日志中的事件编号与描述

帐号登录事件(事件编号与描述) 672 身份验证服务(AS)票证得到成功发行与验证.673 票证授权服务(TGS)票证得到授权.TGS是一份由Kerberos 5.0版票证授权服务(TGS)发行.且允许用户针对域中特定服务进行身份验证的票证.674 安全主体重建AS票证或TGS票证.675 预身份验证失败.这种事件将在用户输入错误密码时由密钥分发中心(KDC)生成.676 身份验证票证请求失败.这种事件在Windows XP Professional操作系统或Windows Server产品家族