zoukankan      html  css  js  c++  java
  • 一个日志类 LogUtil

    第一次自主封装Util类,尝试封装一个日志的操作类LogUtil,逻辑不复杂,也没调用那些复杂的类,只是简单的IO操作。

      1 using System;
      2 using System.IO;
      3 
      4 namespace Common
      5 {
      6     /// <summary>
      7     /// 日志类
      8     /// </summary>
      9     public static class LogUtil
     10     {
     11         /// <summary>
     12         /// 配置默认路径
     13         /// </summary>
     14         private static string defaultPath = System.Configuration.ConfigurationManager.AppSettings["logPath"];
     15 
     16         #region Exception异常日志
     17 
     18         /// <summary>
     19         /// 写异常日志,存放到默认路径
     20         /// </summary>
     21         /// <param name="ex">异常类</param>
     22         public static void WriteError(Exception ex)
     23         {
     24             WriteError(ex, defaultPath);
     25         }
     26 
     27         /// <summary>
     28         /// 写异常日志,存放到指定路径
     29         /// </summary>
     30         /// <param name="ex">异常类</param>
     31         /// <param name="path">日志存放路径</param>
     32         public static void WriteError(Exception ex, string path)
     33         {
     34             string errMsg = CreateErrorMeg(ex);
     35             WriteLog(errMsg, path, LogType.Error);
     36         }
     37 
     38         #endregion
     39 
     40         #region 普通日志
     41 
     42         /// <summary>
     43         /// 写普通日志,存放到默认路径,使用默认日志类型
     44         /// </summary>
     45         /// <param name="msg">日志内容</param>
     46         public static void WriteLog(string msg)
     47         {
     48             WriteLog(msg, LogType.Info);
     49         }
     50 
     51         /// <summary>
     52         /// 写普通日志,存放到默认路径,使用指定日志类型
     53         /// </summary>
     54         /// <param name="msg">日志内容</param>
     55         /// <param name="logType">日志类型</param>
     56         public static void WriteLog(string msg, LogType logType)
     57         {
     58             WriteLog(msg, defaultPath, logType);
     59         }
     60 
     61         /// <summary>
     62         /// 写普通日志,存放到指定路径,使用默认日志类型
     63         /// </summary>
     64         /// <param name="msg">日志内容</param>
     65         /// <param name="path">日志存放路径</param>
     66         public static void WriteLog(string msg, string path)
     67         {
     68             WriteLog(msg, path, LogType.Info);
     69         }
     70 
     71         /// <summary>
     72         /// 写普通日志,存放到指定路径,使用指定日志类型
     73         /// </summary>
     74         /// <param name="msg">日志内容</param>
     75         /// <param name="path">日志存放路径</param>
     76         /// <param name="logType">日志类型</param>
     77         public static void WriteLog(string msg, string path, LogType logType)
     78         {
     79             string fileName = path.Trim('\\')+"\\"+CreateFileName(logType);
     80             string logContext = FormatMsg(msg,logType);
     81             WriteFile(logContext, fileName);
     82         }
     83 
     84         #endregion
     85 
     86         #region 其他辅助方法
     87 
     88         /// <summary>
     89         /// 写日志到文件
     90         /// </summary>
     91         /// <param name="logContext">日志内容</param>
     92         /// <param name="fullName">文件名</param>
     93         private static void WriteFile(string logContext, string fullName)
     94         {
     95             FileStream fs = null;
     96             StreamWriter sw = null;
     97 
     98             int splitIndex = fullName.LastIndexOf('\\');
     99             if (splitIndex == -1) return;
    100             string path = fullName.Substring(0, splitIndex);
    101             
    102             if (!Directory.Exists(path)) Directory.CreateDirectory(path);
    103 
    104             try
    105             {
    106                 if (!File.Exists(fullName)) fs = new FileStream(fullName, FileMode.CreateNew);
    107                 else fs = new FileStream(fullName, FileMode.Append);
    108 
    109                 sw = new StreamWriter(fs);
    110                 sw.WriteLine(logContext);
    111             }
    112             finally
    113             {
    114                 if (sw != null)
    115                 {
    116                     sw.Close();
    117                     sw.Dispose();
    118                 }
    119                 if (fs != null)
    120                 {
    121                     fs.Close();
    122                     fs.Dispose();
    123                 }
    124             }
    125         }
    126 
    127         /// <summary>
    128         /// 格式化日志,日志是默认类型
    129         /// </summary>
    130         /// <param name="msg">日志内容</param>
    131         /// <returns>格式化后的日志</returns>
    132         private static string FormatMsg(string msg)
    133         {
    134             return FormatMsg(msg, LogType.Info);
    135         }
    136 
    137         /// <summary>
    138         /// 格式化日志
    139         /// </summary>
    140         /// <param name="msg">日志内容</param>
    141         /// <param name="logType">日志类型</param>
    142         /// <returns>格式化后的日志</returns>
    143         private static string FormatMsg(string msg, LogType logType)
    144         {
    145             string result;
    146             string header = string.Format("[{0}][{1} {2}] ", logType.ToString(), DateTime.Now.ToShortDateString(),DateTime.Now.ToShortTimeString());
    147             result= header + msg;
    148             return result;
    149         }
    150 
    151         /// <summary>
    152         /// 从异常类中获取日志内容
    153         /// </summary>
    154         /// <param name="ex">异常类</param>
    155         /// <returns>日志内容</returns>
    156         private static string CreateErrorMeg(Exception ex)
    157         {
    158             string result = string.Empty;
    159             result += ex.Message+"\r\n";
    160             result += ex.StackTrace+"\r\n";
    161             return result;
    162         }
    163 
    164         /// <summary>
    165         /// 生成日志文件名
    166         /// </summary>
    167         /// <param name="logType">日志类型</param>
    168         /// <returns>日志文件名</returns>
    169         private static string CreateFileName(LogType logType)
    170         {
    171             string result = DateTime.Now.ToString("yyyy-MM-dd");
    172 if (logType != LogType.Info) 173 result = logType.ToString() + result+".log"; 174 return result; 175 } 176 177 #endregion 178 } 179 180 /// <summary> 181 /// 日志类型 182 /// </summary> 183 public enum LogType 184 { 185 Error, 186 Info, 187 Option 188 } 189 }
  • 相关阅读:
    易飞审核接口下载
    易飞ERP和钉钉办公集成——ERP移动审批解决方案
    Delphi XE----Rtti单元一(TRttiContext)
    Delphi XE
    Delphi XE
    Delphi XE -TCharHelper
    多线程编程
    bacula自动恢复测试脚本
    Bacula监控设置告警Zabbix篇
    Bacula监控设置邮件告警Message篇
  • 原文地址:https://www.cnblogs.com/HopeGi/p/2840812.html
Copyright © 2011-2022 走看看