zoukankan      html  css  js  c++  java
  • C#操作windows事件日志项

     1 /// <summary>
     2     /// 指定事件日志项的事件类型
     3     /// </summary>
     4     public enum EventLogLevel
     5     {
     6         /// <summary>
     7         /// 错误事件。它指示用户应该知道的严重问题(通常是功能或数据的丢失)。
     8         /// </summary>
     9         Error = 1,
    10         /// <summary>
    11         /// 警告事件。它指示并不立即具有重要性的问题,但此问题可能表示将来会导致问题的条件。
    12         /// </summary>
    13         Warning = 2,
    14         /// <summary>
    15         /// 信息事件。它指示重要、成功的操作。
    16         /// </summary>
    17         Information = 4,
    18         /// <summary>
    19         /// 成功审核事件。它指示当审核访问尝试成功(例如成功登录)时发生的安全事件。
    20         /// </summary>
    21         SuccessAudit = 8,
    22         /// <summary>
    23         /// 失败审核事件。它指示当审核访问尝试失败(例如打开文件的尝试失败)时发生的安全事件。
    24         /// </summary>
    25         FailureAudit = 16,
    26     }
    指定事件日志项的事件类型
      1 public static class WebUtil
      2     {
      3         /// <summary>
      4         /// 写日志信息
      5         /// </summary>
      6         /// <param name="Message">日志信息</param>
      7         public static void WriteLog(string Message, EventLogLevel logLevel = EventLogLevel.Information)
      8         {
      9             string sourceName = "DemoEventLog";//Application-应用程序日志
     10             WriteCustomLog(sourceName, Message, logLevel);
     11         }
     12         /// <summary>
     13         /// 写异常日志
     14         /// </summary>
     15         /// <param name="exp">异常信息</param>
     16         public static void WriteLog(Exception exp, EventLogLevel logLevel = EventLogLevel.Error)
     17         {
     18             string filepath = string.Empty;
     19             try
     20             {
     21                 filepath = HttpContext.Current.Request.AppRelativeCurrentExecutionFilePath;
     22             }
     23             catch (Exception)
     24             {
     25 
     26             }
     27             String Message = string.Format("
    
    URL:
     {0}
    
    MESSAGE:
     {1}
    
    STACK TRACE:
     {2}", filepath, exp.Message, exp.StackTrace);
     28             string sourceName = "DemoEventLog";//Application-应用程序日志
     29             WriteCustomLog(sourceName, Message, logLevel);
     30         }
     31         /// <summary>
     32         /// 写异常日志
     33         /// 设置:因为系统日志的操作是有权限控制的,所以我们还要把对系统日志操作的权限赋给asp.net用户,
     34         /// 方法如下:“开始->运行”,输入命令,“regedt32”,找到“System->CurrentControlSet->Services->Eventlog”,
     35         /// 选择“安全->权限->添加”,然后找到本机的“AspNet”用户,加进来并且给读取权限就好了,
     36         /// 加进来后目录中会多一个“aspnet_wp account”
     37         /// 系统出错后,会自动将出错信息记录到系统日志中,你可以在“开始->程序->管理工具->事件查看器”中发现一个新的项目“TownLog”,这便是记录出错信息的。
     38         /// </summary>
     39         /// <param name="message">日志信息</param>
     40         private static void WriteCustomLog(string sourceName, string message, EventLogLevel logLevel = EventLogLevel.Information)
     41         {
     42             try
     43             {
     44                 string logName = sourceName + "Log";
     45                 if (!(EventLog.SourceExists(sourceName)))
     46                 {
     47                     EventLog.CreateEventSource(sourceName, logName);
     48                 }
     49 
     50                 using (EventLog eventLog = new EventLog(logName))
     51                 {
     52                     eventLog.Source = sourceName;
     53                     eventLog.WriteEntry(message, (EventLogEntryType)logLevel);
     54                 }
     55             }
     56             catch (Exception ex)
     57             {
     58                 WriteApplicationLog(ex.ToString());
     59             }
     60         }
     61         /// <summary>
     62         /// 记录应用程序日志
     63         /// </summary>
     64         /// <param name="message"></param>
     65         public static void WriteApplicationLog(string message)
     66         {
     67             try
     68             {
     69                 string sourceName = "Application";
     70 
     71                 if (!(EventLog.SourceExists(sourceName)))
     72                 {
     73                     EventLog.CreateEventSource(sourceName, sourceName);
     74                 }
     75 
     76                 using (EventLog eventLog = new EventLog(sourceName))
     77                 {
     78                     eventLog.Source = sourceName;
     79                     eventLog.WriteEntry(message, EventLogEntryType.Error);
     80                 }
     81             }
     82             catch (Exception ex)
     83             {
     84                 throw ex;
     85             }
     86         }
     87         /// <summary>
     88         /// 获取客户端IP地址(无视代理)
     89         /// </summary>
     90         /// <returns>若失败则返回回送地址</returns>
     91         public static string GetClientIP()
     92         {
     93             string userHostAddress = HttpContext.Current.Request.UserHostAddress;
     94             if (string.IsNullOrEmpty(userHostAddress))
     95             {
     96                 userHostAddress = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
     97             }
     98             //最后判断获取是否成功,并检查IP地址的格式(检查其格式非常重要)
     99             if (!string.IsNullOrEmpty(userHostAddress) && IsIP(userHostAddress))
    100             {
    101                 return userHostAddress;
    102             }
    103             return "127.0.0.1";
    104         }
    105 
    106         /// <summary>
    107         /// 检查IP地址格式
    108         /// </summary>
    109         /// <param name="ip"></param>
    110         /// <returns></returns>
    111         public static bool IsIP(string ip)
    112         {
    113             return System.Text.RegularExpressions.Regex.IsMatch(ip, @"^((2[0-4]d|25[0-5]|[01]?dd?).){3}(2[0-4]d|25[0-5]|[01]?dd?)$");
    114         }
    115         //public static string GetClientIP(System.Web.UI.Page page)
    116         //{
    117         //    string ipAddress = "";
    118         //    if (page.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] == null)
    119         //    {
    120         //        ipAddress = page.Request.ServerVariables["Remote_Addr"];
    121         //    }
    122         //    else
    123         //    {
    124         //        ipAddress = page.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
    125         //    }
    126         //    return ipAddress;
    127         //}
    128 
    129         //public static string GetIP(this Controller ctrl)
    130         //{
    131         //    string ip;
    132         //    if (ctrl.HttpContext.Request.ServerVariables["HTTP_VIA"] != null)
    133         //    {
    134         //        ip = ctrl.HttpContext.Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString();
    135         //    }
    136         //    else
    137         //    {
    138         //        ip = ctrl.HttpContext.Request.ServerVariables["REMOTE_ADDR"].ToString();
    139         //    }
    140         //    return ip;
    141         //}
    142     }
    WebUtil
  • 相关阅读:
    Refined Architecture阶段
    将博客搬至CSDN
    第七周学习总结
    struts2框架学习三 ajax
    Data truncation: Truncated incorrect DOUBLE value: '张利杰'
    struts2框架学习二 action对jsp传值
    决策树
    struts2框架学习1
    寒假自学第十五天
    寒假自学第十四天
  • 原文地址:https://www.cnblogs.com/ziranquliu/p/4648811.html
Copyright © 2011-2022 走看看