这段时间在做路测数据处理,每天都要导入千万条记录至数据库中。因为数据比较庞大,程序处理的指标也很多,厂家给的原始数据也不能保证百分百正确,那么在整个逻辑处理过程中难免会存在不确定性的BUG。为了高效的保证数据的处理,非常有必要将异常信息的现场情景记录下来,为后续分析提供依据,从而快速解决问题。

     日志类本身很简单,就是完成信息的记录功能,其实更重要的是保存哪些有用信息。下面是我参考了下前辈们写的东西修改而来的日志类:

    /// <summary>
    /// 日志类
    /// </summary>
    public class ImportDataLog
    {
        //日志文件所在路径
        private static string logPath = string.Empty;
        /// <summary>
        /// 保存日志的文件夹
        /// </summary>
        public static string LogPath
        {
            get
            {
                if (logPath == string.Empty)
                {
                   logPath = AppDomain.CurrentDomain.BaseDirectory;
                }
                return logPath;
            }
            set { logPath = value; }
        }
        //日志前缀说明信息
        private static string logFielPrefix = string.Empty;
        /// <summary>
        /// 日志文件前缀
        /// </summary>
        public static string LogFielPrefix
        {
            get { return logFielPrefix; }
            set { logFielPrefix = value; }
        }
        /// <summary>
        /// 写日志
        /// <param name="logType">日志类型</param>
        /// <param name="msg">日志内容</param>
        /// </summary>
        public static void WriteLog(string logType, string msg)
        {
            System.IO.StreamWriter sw=null;
            try
            {

      //同一天同一类日志以追加形式保存
                sw = System.IO.File.AppendText(
                    LogPath + LogFielPrefix + "_" +
                    DateTime.Now.ToString("yyyyMMdd") + ".Log"
                    );
                sw.WriteLine(logType + "#" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss: ") + msg);
            }
            catch
            { }
            finally
            {
                sw.Close();
            }
        }
        /// <summary>
        /// 写日志
        /// </summary>
        public static void WriteLog(LogType logType, string msg)
        {
            WriteLog(logType.ToString(), msg);
        }
    }
    /// <summary>
    /// 日志类型
    /// </summary>
    public enum LogType
    {
        Trace,  //堆栈跟踪信息
        Warning,//警告信息
        Error,  //错误信息应该包含对象名、发生错误点所在的方法名称、具体错误信息
        SQL    //与数据库相关的信息
    }

    在程序中,我是特别关注ERROR类型的信息。如注释所示,将引发错误的对象、方法与具体错误信息保存,对解决问题非常有帮助。

    定义Exception ex=new Exception() ,则:

    建议信息msg组成="Source:{" + ex.Source + "}" +                                                                        
                                           " StackTrace:{" + ex.StackTrace + "}" +
                                           " Message:{" + ex.Message + "}");

    班门弄斧,见笑了。。

===============================

笔者建了一个C#技术交流群,欢迎C#开发人员加入。

qq群号:300930265

===============================

posted on 2009-11-04 11:25  仙子崖  阅读(8567)  评论(0编辑  收藏  举报