• 如何记录应用程序日志


    将错误信息记录到Windows日志中.     选择自 rexsp 的 Blog  
    关键字   错误信息 日志 
    出处    
     http://dev.csdn.net/develop/article/27/27666.shtm
     引言:

    任何一个系统都不可能一劳永逸,一直没有错误的运行下去,一个优秀的系统的出错处理也一定是优秀的,而一个好的程序员也一定会很观注可能出错的地方,并作出相应的容错处理。C#中的try catch其实已经为我们省了不少事情,本文并不是并不是对如何做出错处理进行论述的,而是给出一种收集出错信息,并将出错信息存储到Windows日志中的方案。

    一、处理代码:

    using System;

    using System.Diagnostics;

    using System.Text;

    using System.IO;

     

    namespace Town.Log

    {

         /// <summary>

         /// 功能:错误日志类,将错误信息按指定事件日志名记录在系统日志

         /// </summary>

         public class Error

         {

             /// <summary>

             /// 记录日志

             /// </summary>

             /// <param name="sourceName">日志资源名,如:Town</param>

             /// <param name="message">错误信息</param>

             public static void Log(string sourceName, string message)

             {

                  EventLog eventLog = null;

     

                  // 确定日志是否存在

                  if (!(EventLog.SourceExists(sourceName)))

                  {

                       EventLog.CreateEventSource(sourceName, sourceName + "Log");

                  }

     

                  if (eventLog == null)

                  {

                       eventLog = new EventLog(sourceName + "Log");

                       eventLog.Source = sourceName;

                  }

                  

                  // 记录日志信息

                  eventLog.WriteEntry(message, System.Diagnostics.EventLogEntryType.Error);

             }

         }

    }

     

    设置:因为系统日志的操作是有权限控制的,所以我们还要把对系统日志操作的权限赋给asp.net用户,方法如下:“开始->运行”,输入命令,“regedt32”,找到“System->CurrentControlSet->Services->Eventlog”,选择“安全->权限->添加”,然后找到本机的“AspNet”用户,加进来并且给读取权限就好了,加进来后目录中会多一个“aspnet_wp account”

    二、调用方法

                  try

                  {

                       ……

                  }

                  catch (Exception ex)

                  {

                       Error.Log("Town", ex.ToString());

                       return false;

                  }

    三、一点说明

    系统出错后,会自动将出错信息记录到系统日志中,你可以在“开始->程序->管理工具->事件查看器”中发现一个新的项目“TownLog”,这便是记录出错信息的,如下图所示。
    除上面提到的,如果你是要把自己程序产生的日志记录下来,如错误日志,可如下做:  
       
      //错误后记录到系统日志中;注意导入System.Diagnostics命名空间;注意在  
      //[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application建个该程序日志分支。  
      try  
      {  
      string   errorMessage="我的系统有错误发生,详细错误是"+Server.GetLastError();  
      Server.ClearError();  
      string   LogName="MyApplicationLog";  
      string   SourceName="我的错误日志";  
      if(!(EventLog.SourceExists(SourceName)))  
      {  
      EventLog.CreateEventSource(SourceName,LogName);  
      }  
      //insert   into   EventLog:  
      EventLog   MyLog=new   EventLog();  
      MyLog.Source=SourceName;  
      MyLog.WriteEntry(errorMessage,EventLogEntryType.Error);  
      }  
      catch  
      {  
      }  
      finally  
      {  
      }  
      }  
      记录错误日志如果不改注册表将会出现ASP.NET帐户访问注册表的权限问题,可以手工改注册表或做成.reg文件预先导入,Winform无此问题。  

    public   class   Error   {  
      //记录错误日志位置  
      //string   str=ConfigurationSettings.AppSettings["ConnectionString"].ToString()  
      private   const   string   FILE_NAME   ="c:\\FengWuOAlog.txt";  
                        public   Error()   {}  
      ///   <summary>  
      ///   记录日志至文本文件  
      ///   </summary>  
      ///   <param   name="message">记录的内容</param>  
      public   static   void   Log(string   message)   {  
      if(File.Exists(FILE_NAME))  
      {  
      StreamWriter   sr   =   File.AppendText(FILE_NAME);  
      sr.WriteLine   ("\n");  
      sr.WriteLine("======================"+DateTime.Now.ToString()+"====================");  
      sr.WriteLine   (DateTime.Now.ToString()+message);  
      sr.Close();  
      }  
      else  
      {  
      StreamWriter   sr   =   File.CreateText(FILE_NAME);  
      sr.Close();  
      }

  • 相关阅读:
    Docker安装Redis
    C语言读取Java的字节码文件的第一步
    springdataredis之RedisMessageListenerContainer源码解析
    【转载】logback自定义目录及输出格式
    【转载】springbootdependencies 跟 springbootstarterparent
    Docker安装PostgreSQL数据库
    SpringBoot整合Redis实现发布订阅功能实践
    iso 刻录软件 openwrt
    python selenium 获取UA 睁yan
    cnvd 获取最新cookie (反爬) 睁yan
  • 原文地址:https://www.cnblogs.com/cuiwenke/p/1739877.html
Copyright © 2020-2023  润新知