/// <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. Linux编译移植Qt5的环境_Xillinx的ZYNQ平台

    Linux编译Qt环境 2017年的十一假期,足不出户,一个人在教研室里面搞Qt的移植.我手里面有Samsung的CortexA8,Samsung的 CortexA53还有Ti的Sitara系列的AM ...

  2. python入门基本知识

    1. 什么是语言 语言是一个事物与另外一个事物沟通的介质. python则是人(程序员)与计算机沟通的介质. 2. 什么是编程 编程就是程序员将自己想要让计算机做的事情用编程语言翻译出来写到一系列的文 ...

  3. UINavigationController相关

    掌握: 1. UINavigationController的使用:添加.移除控制器. 2. UINavigationBar内容的设置. -------------------------------- ...

  4. 2016 ACM-ICPC Asia China-Final D 二分

    题意:一共有N个冰淇淋球,做一个冰淇淋需要K个球,并且由于稳定性,这K个球还必须满足上下相邻的下面比上面大至少两倍.先给出N个球的质量,问最多能做出多少个冰淇淋? 思路:二分答案并对其检验. 检验标准 ...

  5. Android AppUtil通用类

    1.整体分析 1.1.先看一下源码,可以直接Copy. public class AppUtil { /** * 获取当前程序包名 * * @param context 上下文 * @return 程 ...

  6. Android自定义组件之简单组合

    Android自定义控件有两种,一种是组合.比如一个linearlayout 里面有textview,imageview. 这样的好处是,写一个就可以多处使用. view_image_and_butt ...

  7. 《Cracking the Coding Interview》——第6章:智力题——题目4

    2014-03-20 01:02 题目:无力描述的一道智力题,真是货真价实的智力题,让我充分怀疑自己智力的智力题.有兴趣的还是看书去吧. 解法:能把题目看懂,你就完成80%了,用反证法吧. 代码: / ...

  8. 问题:JFinal框架使用FreeMarker渲染视图报错

    本人用的是JFinal-3.4. 问题描述: 在JFinal框架中使用FreeMarker渲染视图时,报 Caused by: java.lang.ClassNotFoundException: fr ...

  9. 更改maven本地仓库地址

    1.进入maven安装conf文件中,编辑settings.xml文件,新增图中的圈出的内容(我想要存放的地址是D:\HMY\m2\repository) 2.复制settings.xml文件至D:\ ...

  10. Codeforces 1088E 树形dp+思维

    比赛的时候看到题意没多想就放弃了.结果最后D也没做出来,还掉分了,所以还是题目做的太少,人太菜. 回到正题: 题意:一棵树,点带权值,然后求k个子连通块,使得k个连通块内所有的点权值相加作为分子除以k ...