/// <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. 裸机——I2C

    网上搜了些资料,碍于智商和基础,看不懂, 只有将S5PV210 数据手册关于I2C的部分,翻译记录下,留到以后用. 1.OVERVIEW The S5PV210 RISC microprocessor ...

  2. POJ:2367-Cleaning Shifts

    传送门:http://poj.org/problem?id=2376 Cleaning Shifts Time Limit: 1000MS Memory Limit: 65536K Total Sub ...

  3. Leetcode 701. 二叉搜索树中的插入操作

    题目链接 https://leetcode.com/problems/insert-into-a-binary-search-tree/description/ 题目描述 给定二叉搜索树(BST)的根 ...

  4. Android 中的一些特殊目录与文件

    用作命令的二进制文件位于/system/bin/与/system/xbin/下 应用数据位于/data/data/, 原始安装文件位于/data/app/(Play商店中非免费应用位于/data/ap ...

  5. Spark 源码阅读——任务提交过程

    当我们在使用spark编写mr作业是,最后都要涉及到调用reduce,foreach或者是count这类action来触发作业的提交,所以,当我们查看这些方法的源码时,发现底层都调用了SparkCon ...

  6. 实时查询引擎 - Facebook Presto 介绍与应用

    1. Presto 是什么   Facebook presto是什么,继Facebook创建了HIVE神器后的又一以SQL语言作为接口的分布式实时查询引擎,可以对PB级的数据进行快速的交互式查询.它支 ...

  7. PHP代码审计6-实战漏洞挖掘-xdcms用户注册页面漏洞

    xdcms 源码:xdcms v2.0.8 1.配置 [一直下一步(仅为测试)] #数据库账号root,密码为空:管理员账号/密码:xdcms/xdcms #登录后台 2.查看后台登录页面的配置项[x ...

  8. 3 web框架

    web框架 Web框架(Web framework)是一种开发框架,用来支持动态网站.网络应用和网络服务的开发.这大多数的web框架提供了一套开发和部署网站的方式,也为web行为提供了一套通用的方法. ...

  9. adb 显示手机分辨率

    adb shell dumpsys window | grep "ShownFrame" | head -n 1 adb shell dwm size 当然,作为一个Android ...

  10. springboot 采用HttpClient获取天气预报 异常及原因

    采用httpClient调用天气预报地址获取出现异常 2018-10-04 15:18:25.815 ERROR 10868 --- [nio-8080-exec-5] o.a.c.c.C.[.[.[ ...