日志类 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
     }
 }

 

在Android开发中,我们经常会使用Log来打印日志。但是,Android原生的Log输出信息有限,为了更好地输出和管理日志,我们可以自定义LogUtil。 下面是一个简单的LogUtil,可以自定义输出日志级别、输出信息格式等: ```java public class LogUtil { private static final String TAG = "LogUtil"; private static boolean sDebug = true; // 是否打印日志 private static boolean sSaveLog = false; // 是否保存日志到文件 private static String sLogPath = Environment.getExternalStorageDirectory().getPath() + "/log.txt"; // 日志保存路径 public static void setDebug(boolean debug) { sDebug = debug; } public static void setSaveLog(boolean saveLog) { sSaveLog = saveLog; } public static void setLogPath(String logPath) { sLogPath = logPath; } public static void v(String msg) { if (sDebug) { Log.v(TAG, msg); } saveLogToFile("V", TAG, msg); } public static void d(String msg) { if (sDebug) { Log.d(TAG, msg); } saveLogToFile("D", TAG, msg); } public static void i(String msg) { if (sDebug) { Log.i(TAG, msg); } saveLogToFile("I", TAG, msg); } public static void w(String msg) { if (sDebug) { Log.w(TAG, msg); } saveLogToFile("W", TAG, msg); } public static void e(String msg) { if (sDebug) { Log.e(TAG, msg); } saveLogToFile("E", TAG, msg); } private static void saveLogToFile(String level, String tag, String msg) { if (sSaveLog) { try { File file = new File(sLogPath); FileWriter fw = new FileWriter(file, true); BufferedWriter bw = new BufferedWriter(fw); bw.write("[" + level + "] " + tag + ": " + msg + "\n"); bw.close(); fw.close(); } catch (IOException e) { Log.e(TAG, "saveLogToFile: " + e.getMessage()); } } } } ``` 使用方法: ```java LogUtil.setDebug(true); // 设置是否打印日志 LogUtil.setSaveLog(true); // 设置是否保存日志到文件 LogUtil.setLogPath("/sdcard/log.txt"); // 设置日志保存路径 LogUtil.v("verbose log"); LogUtil.d("debug log"); LogUtil.i("info log"); LogUtil.w("warning log"); LogUtil.e("error log"); ``` 以上就是一个简单的LogUtil的实现,可以根据自己的需求进行修改和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值