• 日志类 LogUtil


    本文转载:http://www.cnblogs.com/HopeGi/archive/2012/12/31/2840812.html

    using System;
     using System.IO;
     
     namespace Common
     {
         /// <summary>
         
    /// 日志类
         
    /// </summary>
         public static class LogUtil
         {
             /// <summary>
             
    /// 配置默认路径
             
    /// </summary>
             private static string defaultPath = System.Configuration.ConfigurationManager.AppSettings["logPath"];
     
             #region Exception异常日志
     
             /// <summary>
             
    /// 写异常日志,存放到默认路径
             
    /// </summary>
             
    /// <param name="ex">异常类</param>
             public static void WriteError(Exception ex)
             {
                 WriteError(ex, defaultPath);
             }
     
             /// <summary>
             
    /// 写异常日志,存放到指定路径
             
    /// </summary>
             
    /// <param name="ex">异常类</param>
             
    /// <param name="path">日志存放路径</param>
             public static void WriteError(Exception ex, string path)
             {
                 string errMsg = CreateErrorMeg(ex);
                 WriteLog(errMsg, path, LogType.Error);
             }
     
             #endregion
     
             #region 普通日志
     
             /// <summary>
             
    /// 写普通日志,存放到默认路径,使用默认日志类型
             
    /// </summary>
             
    /// <param name="msg">日志内容</param>
             public static void WriteLog(string msg)
             {
                 WriteLog(msg, LogType.Info);
             }
     
             /// <summary>
             
    /// 写普通日志,存放到默认路径,使用指定日志类型
             
    /// </summary>
             
    /// <param name="msg">日志内容</param>
             
    /// <param name="logType">日志类型</param>
             public static void WriteLog(string msg, LogType logType)
             {
                 WriteLog(msg, defaultPath, logType);
             }
     
             /// <summary>
             
    /// 写普通日志,存放到指定路径,使用默认日志类型
             
    /// </summary>
             
    /// <param name="msg">日志内容</param>
             
    /// <param name="path">日志存放路径</param>
             public static void WriteLog(string msg, string path)
             {
                 WriteLog(msg, path, LogType.Info);
             }
     
             /// <summary>
             
    /// 写普通日志,存放到指定路径,使用指定日志类型
             
    /// </summary>
             
    /// <param name="msg">日志内容</param>
             
    /// <param name="path">日志存放路径</param>
             
    /// <param name="logType">日志类型</param>
             public static void WriteLog(string msg, string path, LogType logType)
             {
                 string fileName = path.Trim('\\')+"\\"+CreateFileName(logType);
                 string logContext = FormatMsg(msg,logType);
                 WriteFile(logContext, fileName);
             }
     
             #endregion
     
             #region 其他辅助方法
     
             /// <summary>
             
    /// 写日志到文件
             
    /// </summary>
             
    /// <param name="logContext">日志内容</param>
             
    /// <param name="fullName">文件名</param>
             private static void WriteFile(string logContext, string fullName)
             {
                 FileStream fs = null;
                 StreamWriter sw = null;
     
                 int splitIndex = fullName.LastIndexOf('\\');
                 if (splitIndex == -1return;
                 string path = fullName.Substring(0, splitIndex);
                 
                 if (!Directory.Exists(path)) Directory.CreateDirectory(path);
     
                 try
                 {
                     if (!File.Exists(fullName)) fs = new FileStream(fullName, FileMode.CreateNew);
                     else fs = new FileStream(fullName, FileMode.Append);
     
                     sw = new StreamWriter(fs);
                     sw.WriteLine(logContext);
                 }
                 finally
                 {
                     if (sw != null)
                     {
                         sw.Close();
                         sw.Dispose();
                     }
                     if (fs != null)
                     {
                         fs.Close();
                         fs.Dispose();
                     }
                 }
             }
     
             /// <summary>
             
    /// 格式化日志,日志是默认类型
             
    /// </summary>
             
    /// <param name="msg">日志内容</param>
             
    /// <returns>格式化后的日志</returns>
             private static string FormatMsg(string msg)
             {
                 return FormatMsg(msg, LogType.Info);
             }
     
             /// <summary>
             
    /// 格式化日志
             
    /// </summary>
             
    /// <param name="msg">日志内容</param>
             
    /// <param name="logType">日志类型</param>
             
    /// <returns>格式化后的日志</returns>
             private static string FormatMsg(string msg, LogType logType)
             {
                 string result;
                 string header = string.Format("[{0}][{1} {2}] ", logType.ToString(), DateTime.Now.ToShortDateString(),DateTime.Now.ToShortTimeString());
                 result= header + msg;
                 return result;
             }
     
             /// <summary>
             
    /// 从异常类中获取日志内容
             
    /// </summary>
             
    /// <param name="ex">异常类</param>
             
    /// <returns>日志内容</returns>
             private static string CreateErrorMeg(Exception ex)
             {
                 string result = string.Empty;
                 result += ex.Message+"\r\n";
                 result += ex.StackTrace+"\r\n";
                 return result;
             }
     
             /// <summary>
             
    /// 生成日志文件名
             
    /// </summary>
             
    /// <param name="logType">日志类型</param>
             
    /// <returns>日志文件名</returns>
             private static string CreateFileName(LogType logType)
             {
                 string result = DateTime.Now.ToString("yyyy-MM-dd");
                 if (logType != LogType.Info)
                     result = logType.ToString() + result+".log";
                 return result;
             }
     
             #endregion
         }
     
         /// <summary>
         
    /// 日志类型
         
    /// </summary>
         public enum LogType
         { 
             Error,
             Info,
             Option
         }
     }
  • 相关阅读:
    暑假日报-35
    非确定性有穷状态决策自动机练习题Vol.1 题解 & 总结
    loj数列分块入门 1~9
    第12周作业
    第二阶段考试
    UOJ NOI Round 4
    事件
    爬楼梯
    构造函数输出
    比较版本号大小
  • 原文地址:https://www.cnblogs.com/51net/p/3021652.html
Copyright © 2020-2023  润新知