/// <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事件日志项的更多相关文章

  1. .NET 操作 EventLog(Windows事件日志监控)(转载)

    操作Windows日志:EventLog 如果要在.NET Core控制台项目中使用EventLog(Windows事件日志监控),首先需要下载Nuget包: System.Diagnostics.E ...

  2. 使用EventLog类写Windows事件日志

    在程序中经常需要将指定的信息(包括异常信息和正常处理信息)写到日志中.在C#3.0中可以使用EventLog类将各种信息直接写入Windows日志.EventLog类在System.Diagnosti ...

  3. Syslog和Windows事件日志收集

    Syslog和Windows事件日志收集 EventLog Analyzer从分布式Windows设备收集事件日志,或从分布式Linux和UNIX设备.交换机和路由器(Cisco)收集syslog.事 ...

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

    为什么要使用日志管理?syslog和Windows事件日志 日志管理 - 确保网络安全的先决条件 日志给予您有关网络活动的第一手信息.日志管理确保日志中隐藏的网络活动数据转换为有意义的可操作的安全信息 ...

  5. Python处理Windows事件日志(json)

    通过NXlog将Windows事件日志保存为json格式文件,然后在Python中使用json.loads()进行处理. NXlog在将Windows事件日志保存为json格式文件,文件中带入了BOM ...

  6. .NET拾忆:EventLog(Windows事件日志监控)

    操作Windows日志:EventLog 1:事件日志名(logName):“事件查看器”中的每一项,如“应用程序”.“Internet Explorer”.“安全性”和“系统”都是日志(严格地说是日 ...

  7. Zabbix监控Windows事件日志

    1.zabbix_agentd.win文件修改: LogFile=c:\zabbix\zabbix_agentd.log Server=1.16.2.4 ServerActive=1.16.2.4 H ...

  8. 用python查看windows事件日志的方法(待后续研究)

    #coding=utf8 import copy import ctypes from ctypes import byref, POINTER, cast, c_uint64, c_ulong, c ...

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

    1.IP地址配置不正确: 打开 Microsoft SQL Server 2005配置工具下的SQL Server Configuration Manager,选择MSSQLSERVER协议, 然后双 ...

随机推荐

  1. PAT (Basic Level) Practice 1040 有几个PAT

    个人练习 字符串 APPAPT 中包含了两个单词 PAT,其中第一个 PAT 是第 2 位(P),第 4 位(A),第 6 位(T):第二个 PAT 是第 3 位(P),第 4 位(A),第 6 位( ...

  2. C++封装的全部总结

    类 类是对现实生活中一类具有共同特征的事物的抽象 类是面向对象程序设计实现信息封装的基础. 类是一种用户定义类型,也称类类型. 类的实例称为对象. 类的实质是一种数据类型 面向对象原则 以对象为中心, ...

  3. Android Url相关工具 通用类UrlUtil

    1.整体分析 1.1.源代码查看,可以直接Copy. public class UrlUtil { public static boolean isUrlPrefix(String url) { re ...

  4. STM8 输出比较极性

    PWM输出的信号极性有两个选项决定,一个选项是PWM模式,另一个选项是输出极性控制位. 请看定时器的框图,PWM模式的选择决定OC1REF的极性, 例如当选择PWM1模式时,OC1REF信号是&quo ...

  5. CSS3---混合模式

    概念 CSS3混合模式(  CSS Blend Modes  )是CSS3新增的一个魔法特性,可以允许多个背景或多个元素进行混合,类似于Photoshop的图层混合模式 CSS3混合模式属性一览 ba ...

  6. android gridview 停止滚动

    http://blog.csdn.net/yaphetzhao/article/details/50544105 参考上面的博客,关键代码我就贴出来吧: public void stopGridVie ...

  7. Docker构建nginx+uwsgi+flask镜像(二)

    Dockerfile搭建环境并打包应用 在上一章Docker构建nginx+uwsgi+flask镜像(一)的学习中,我们学会用命令行一句一句在alpine环境中搭建nginx+uwsgi+flask ...

  8. svn服务器的配置和使用

    安装好了svn服务器,打开 VisualSVN Server Manager 先新建用户和组,在代码库创建的时候可以指定哪些用户或者组有读写权限,也可以创建好后指定 创建用户 输入用户名和密码创建用户 ...

  9. [译]9-spring bean的生命周期

    spring中bean的生命周期比较容易理解.bean在实例化之后有时需要调用某个初始化方法进行一些初始化的工作.同样的 ,当bean在销毁之前有时需要做一些资源回收的工作. 尽管bean在实例化和销 ...

  10. (转\整)UE4游戏优化 多人大地型游戏的优化(三)GPU的优化

    施主分享随缘,评论随心,@author:白袍小道 小道暗语: 1.因为小道这里博客目录没自己整,暂时就用随笔目录结构,所以二级目录那啥就忽略了.标题格式大致都是(原or转) 二级目录 (标题) 2.因 ...