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协议, 然后双 ...
随机推荐
- foreachRDD,foreach,foreachPartition区别联系
foreachRDD(SparkStreaming): SparkStreaming是流式实时处理数据,就是将数据流按照定义的时间进行分割(就是"批处理").每一个时间段内处理到的 ...
- python——标准异常总结
请参考此网站: Python 标准异常总结 https://fishc.com.cn/forum.php?mod=viewthread&tid=45814&extra=page%3D1 ...
- Bootstrap3适配IE8浏览器的方法
<!--[if lte IE 8]> <script src="js/respond.min.js"></script> <script ...
- ThinkPad 触控板双指不可以滑动
我一直在想为什么,今天我想禁用触摸板的时候,我找到原因了. 是因为没有装驱动. http://think.lenovo.com.cn/support/driver/newdriversdownlist ...
- Eclipse 透视图(Perspective)---Eclipse教程第06课
什么是透视图? 透视图是一个包含一系列视图和内容编辑器的可视容器.默认的透视图叫 java. Eclipse 窗口可以打开多个透视图,但在同一时间只能有一个透视图处于激活状态. 用户可以在两个透视图之 ...
- GCD那些事儿
GCD GCD,全名Grand Central Dispatch,中文名郭草地,是基于C语言的一套多线程开发API,一听名字就是个狠角色,也是目前苹果官方推荐的多线程开发方式.可以说是使用方便,又不失 ...
- 【java下午茶】12306的双人票
明天下午就要和客户谈需求了,今天还在列车上假象着明天的情景,由于这是一个旅游的项目,所以想尽可能设计得人性化一些. 不过有件很不爽的事情就是和老公的位子是分开的,虽然我们订的是连坐号.就这个问题也是我 ...
- Jmeter的好搭档Badboy的安装与简单使用
前提: Windows7 64位 Jdk 1.8 1.在官网上下载badboy并安装 网址:http://www.badboy.com.au/download/add 我下载的是最新的2.2.5这个 ...
- 自动化测试学习之路--json、dom编程
1.json: json是JavaScript Object Notation,是一种数据传输格式. 以下程序都是在浏览器的Console下执行的. 创建一个javaScript的对象: var st ...
- Spring Boot多数据源配置(一)durid、mysql、jpa整合
目前在做一个统计项目.需要多数据源整合,其中包括mysql和mongo.本节先讲mysql.durid.jpa与spring-boot的整合. 引入Durid包 <dependency> ...