zoukankan      html  css  js  c++  java
  • 如何记录应用程序日志

    将错误信息记录到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();  
      }

  • 相关阅读:
    康复计划
    Leetcode 08.02 迷路的机器人 缓存加回溯
    Leetcode 38 外观数列
    Leetcode 801 使序列递增的最小交换次数
    Leetcode 1143 最长公共子序列
    Leetcode 11 盛水最多的容器 贪心算法
    Leetcode 1186 删除一次得到子数组最大和
    Leetcode 300 最长上升子序列
    Leetcode95 不同的二叉搜索树II 精致的分治
    Leetcode 1367 二叉树中的列表 DFS
  • 原文地址:https://www.cnblogs.com/cuiwenke/p/1739877.html
Copyright © 2011-2022 走看看