C#操作windows事件日志项
/// <summary>
/// 指定事件日志项的事件类型
/// </summary>
public enum EventLogLevel
{
/// <summary>
/// 错误事件。它指示用户应该知道的严重问题(通常是功能或数据的丢失)。
/// </summary>
Error = ,
/// <summary>
/// 警告事件。它指示并不立即具有重要性的问题,但此问题可能表示将来会导致问题的条件。
/// </summary>
Warning = ,
/// <summary>
/// 信息事件。它指示重要、成功的操作。
/// </summary>
Information = ,
/// <summary>
/// 成功审核事件。它指示当审核访问尝试成功(例如成功登录)时发生的安全事件。
/// </summary>
SuccessAudit = ,
/// <summary>
/// 失败审核事件。它指示当审核访问尝试失败(例如打开文件的尝试失败)时发生的安全事件。
/// </summary>
FailureAudit = ,
}
指定事件日志项的事件类型
public static class WebUtil
{
/// <summary>
/// 写日志信息
/// </summary>
/// <param name="Message">日志信息</param>
public static void WriteLog(string Message, EventLogLevel logLevel = EventLogLevel.Information)
{
string sourceName = "DemoEventLog";//Application-应用程序日志
WriteCustomLog(sourceName, Message, logLevel);
}
/// <summary>
/// 写异常日志
/// </summary>
/// <param name="exp">异常信息</param>
public static void WriteLog(Exception exp, EventLogLevel logLevel = EventLogLevel.Error)
{
string filepath = string.Empty;
try
{
filepath = HttpContext.Current.Request.AppRelativeCurrentExecutionFilePath;
}
catch (Exception)
{ }
String Message = string.Format("\n\nURL:\n {0}\n\nMESSAGE:\n {1}\n\nSTACK TRACE:\n {2}", filepath, exp.Message, exp.StackTrace);
string sourceName = "DemoEventLog";//Application-应用程序日志
WriteCustomLog(sourceName, Message, logLevel);
}
/// <summary>
/// 写异常日志
/// 设置:因为系统日志的操作是有权限控制的,所以我们还要把对系统日志操作的权限赋给asp.net用户,
/// 方法如下:“开始->运行”,输入命令,“regedt32”,找到“System->CurrentControlSet->Services->Eventlog”,
/// 选择“安全->权限->添加”,然后找到本机的“AspNet”用户,加进来并且给读取权限就好了,
/// 加进来后目录中会多一个“aspnet_wp account”
/// 系统出错后,会自动将出错信息记录到系统日志中,你可以在“开始->程序->管理工具->事件查看器”中发现一个新的项目“TownLog”,这便是记录出错信息的。
/// </summary>
/// <param name="message">日志信息</param>
private static void WriteCustomLog(string sourceName, string message, EventLogLevel logLevel = EventLogLevel.Information)
{
try
{
string logName = sourceName + "Log";
if (!(EventLog.SourceExists(sourceName)))
{
EventLog.CreateEventSource(sourceName, logName);
} using (EventLog eventLog = new EventLog(logName))
{
eventLog.Source = sourceName;
eventLog.WriteEntry(message, (EventLogEntryType)logLevel);
}
}
catch (Exception ex)
{
WriteApplicationLog(ex.ToString());
}
}
/// <summary>
/// 记录应用程序日志
/// </summary>
/// <param name="message"></param>
public static void WriteApplicationLog(string message)
{
try
{
string sourceName = "Application"; if (!(EventLog.SourceExists(sourceName)))
{
EventLog.CreateEventSource(sourceName, sourceName);
} using (EventLog eventLog = new EventLog(sourceName))
{
eventLog.Source = sourceName;
eventLog.WriteEntry(message, EventLogEntryType.Error);
}
}
catch (Exception ex)
{
throw ex;
}
}
/// <summary>
/// 获取客户端IP地址(无视代理)
/// </summary>
/// <returns>若失败则返回回送地址</returns>
public static string GetClientIP()
{
string userHostAddress = HttpContext.Current.Request.UserHostAddress;
if (string.IsNullOrEmpty(userHostAddress))
{
userHostAddress = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
}
//最后判断获取是否成功,并检查IP地址的格式(检查其格式非常重要)
if (!string.IsNullOrEmpty(userHostAddress) && IsIP(userHostAddress))
{
return userHostAddress;
}
return "127.0.0.1";
} /// <summary>
/// 检查IP地址格式
/// </summary>
/// <param name="ip"></param>
/// <returns></returns>
public static bool IsIP(string ip)
{
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?)$");
}
//public static string GetClientIP(System.Web.UI.Page page)
//{
// string ipAddress = "";
// if (page.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] == null)
// {
// ipAddress = page.Request.ServerVariables["Remote_Addr"];
// }
// else
// {
// ipAddress = page.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
// }
// return ipAddress;
//} //public static string GetIP(this Controller ctrl)
//{
// string ip;
// if (ctrl.HttpContext.Request.ServerVariables["HTTP_VIA"] != null)
// {
// ip = ctrl.HttpContext.Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString();
// }
// else
// {
// ip = ctrl.HttpContext.Request.ServerVariables["REMOTE_ADDR"].ToString();
// }
// return ip;
//}
}
WebUtil
C#操作windows事件日志项的更多相关文章
- .NET 操作 EventLog(Windows事件日志监控)(转载)
操作Windows日志:EventLog 如果要在.NET Core控制台项目中使用EventLog(Windows事件日志监控),首先需要下载Nuget包: System.Diagnostics.E ...
- 使用EventLog类写Windows事件日志
在程序中经常需要将指定的信息(包括异常信息和正常处理信息)写到日志中.在C#3.0中可以使用EventLog类将各种信息直接写入Windows日志.EventLog类在System.Diagnosti ...
- Syslog和Windows事件日志收集
Syslog和Windows事件日志收集 EventLog Analyzer从分布式Windows设备收集事件日志,或从分布式Linux和UNIX设备.交换机和路由器(Cisco)收集syslog.事 ...
- 为什么要使用日志管理?syslog和Windows事件日志
为什么要使用日志管理?syslog和Windows事件日志 日志管理 - 确保网络安全的先决条件 日志给予您有关网络活动的第一手信息.日志管理确保日志中隐藏的网络活动数据转换为有意义的可操作的安全信息 ...
- Python处理Windows事件日志(json)
通过NXlog将Windows事件日志保存为json格式文件,然后在Python中使用json.loads()进行处理. NXlog在将Windows事件日志保存为json格式文件,文件中带入了BOM ...
- .NET拾忆:EventLog(Windows事件日志监控)
操作Windows日志:EventLog 1:事件日志名(logName):“事件查看器”中的每一项,如“应用程序”.“Internet Explorer”.“安全性”和“系统”都是日志(严格地说是日 ...
- Zabbix监控Windows事件日志
1.zabbix_agentd.win文件修改: LogFile=c:\zabbix\zabbix_agentd.log Server=1.16.2.4 ServerActive=1.16.2.4 H ...
- 用python查看windows事件日志的方法(待后续研究)
#coding=utf8 import copy import ctypes from ctypes import byref, POINTER, cast, c_uint64, c_ulong, c ...
- SQL Server 无法生成 FRunCM 线程。请查看 SQL Server 错误日志和 Windows 事件日志
1.IP地址配置不正确: 打开 Microsoft SQL Server 2005配置工具下的SQL Server Configuration Manager,选择MSSQLSERVER协议, 然后双 ...
随机推荐
- 无序数组中第K大的数
1. 排序法 时间复杂度 O(nlogn) 2. 使用一个大小为K的数组arr保存前K个最大的元素 遍历原数组,遇到大于arr最小值的元素时候,使用插入排序方法,插入这个元素 时间复杂度,遍历是 O( ...
- 部分和问题 南阳acm1058(递归+dfs)
部分和问题 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描述 给定整数a1.a2........an,判断是否可以从中选出若干数,使它们的和恰好为K. 输入 首先, ...
- stdio中牛逼的写法
用空间换时间的典型 /* * NOTE! This ctype does not handle EOF like the standard C * library is required to. */ ...
- POJ:1017-Packets(贪心+模拟,神烦)
传送门:http://poj.org/problem?id=1017 Packets Time Limit: 1000MS Memory Limit: 10000K Total Submissions ...
- [BZOJ3631][JLOI2014]松鼠的新家(树链剖分)
[BZOJ3631] 树剖模板题了, Code #include <cstdio> #include <algorithm> #define MID int mid=(l+r) ...
- 使用泛型类简化ibatis系统架构
jdk1.5的推出为我们带来了枚举.泛型.foreach循环.同步工具包等等好东西.其中,泛型的使用为我们的代码开发提供了很大的简便,简化了我们的代码. 1.设计思路 1)GenericDao泛型类提 ...
- python datetime offset-aware与offset-navie相互转换
python datetime offset-aware与offset-navie相互转换 2016年11月13日 16:20:43 阅读数:2393 有时,我们使用python 的datetime模 ...
- C#正则表达式引发的CPU跑高问题以及解决方法
3月23日(周日)下午16:30左右,博客园主站负载均衡中的2台Web服务器CPU玩起了爬楼梯的游戏(见上图),一直爬到了接近100%.发现这个状况后,我们立即将这2台阿里云临时磁盘云服务器从负载均衡 ...
- 剑指Offer - 九度1367 - 二叉搜索树的后序遍历序列
剑指Offer - 九度1367 - 二叉搜索树的后序遍历序列2013-11-23 03:16 题目描述: 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出 ...
- USACO Section1.2 Transformations 解题报告
transform解题报告 —— icedream61 博客园(转载请注明出处)------------------------------------------------------------ ...