1. 程式人生 > >為App添加Log日誌文件

為App添加Log日誌文件

tee one tin direct error 原創 closed bug summary

很多時候需要為我們應用程序添加日子文件,方便問題定位

代碼轉載而來,非原創

技術分享圖片
  1 using System;
  2 using System.Collections.Generic;
  3 using System.Linq;
  4 using System.Text;
  5 using System.IO;
  6 using System.Reflection;
  7 
  8 namespace CommonLib
  9 {
 10     /// <summary>
 11     /// 日誌類型
 12     /// </summary>
13 public enum LogType 14 { 15 All, 16 Information, 17 Debug, 18 Success, 19 Failure, 20 Warning, 21 Error 22 } 23 24 25 public class Logger 26 { 27 28 #region Instance 29 private
static object logLock; 30 31 private static Logger _instance; 32 33 private static string logFileName; 34 private Logger() { } 35 36 /// <summary> 37 /// Logger instance 38 /// </summary> 39 public static Logger Instance
40 { 41 get 42 { 43 if (_instance == null) 44 { 45 _instance = new Logger(); 46 logLock = new object(); 47 //logFileName = Guid.NewGuid() + ".log"; 48 logFileName = DateTime.Now.Hour.ToString("00") + DateTime.Now.Minute.ToString("00") +DateTime.Now.Second.ToString("00") + ".log"; 49 } 50 return _instance; 51 } 52 } 53 #endregion 54 55 /// <summary> 56 /// Write log to log file 57 /// </summary> 58 /// <param name="logContent">Log content</param> 59 /// <param name="logType">Log type</param> 60 public void WriteLog(string logContent, LogType logType = LogType.Information, string fileName = null) 61 { 62 try 63 { 64 string basePath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); 65 basePath = Directory.GetCurrentDirectory(); //@"C:\APILogs"; 66 if (!Directory.Exists(basePath + "\\Log")) 67 { 68 Directory.CreateDirectory(basePath + "\\Log"); 69 } 70 71 string dataString = DateTime.Now.ToString("yyyy-MM-dd"); 72 if (!Directory.Exists(basePath + "\\Log\\" + dataString)) 73 { 74 Directory.CreateDirectory(basePath + "\\Log\\" + dataString); 75 } 76 77 string[] logText = new string[] { DateTime.Now.ToString("hh:mm:ss") + ": " + logType.ToString() + ": " + logContent }; 78 if (!string.IsNullOrEmpty(fileName)) 79 { 80 fileName = fileName + "_" + logFileName; 81 } 82 else 83 { 84 fileName = logFileName; 85 //fileName = DateTime.Now.ToString("hh:mm:ss"); 86 } 87 88 lock (logLock) 89 { 90 File.AppendAllLines(basePath + "\\Log\\" + dataString + "\\" + fileName, logText); 91 } 92 } 93 catch (Exception) { } 94 } 95 96 /// <summary> 97 /// Write exception to log file 98 /// </summary> 99 /// <param name="exception">Exception</param> 100 public void WriteException(Exception exception, string specialText = null) 101 { 102 if (exception != null) 103 { 104 Type exceptionType = exception.GetType(); 105 string text = string.Empty; 106 if (!string.IsNullOrEmpty(specialText)) 107 { 108 text = text + specialText + Environment.NewLine; 109 } 110 text = "Exception: " + exceptionType.Name + Environment.NewLine; 111 text += " " + "Message: " + exception.Message + Environment.NewLine; 112 text += " " + "Source: " + exception.Source + Environment.NewLine; 113 text += " " + "StackTrace: " + exception.StackTrace + Environment.NewLine; 114 WriteLog(text, LogType.Error); 115 } 116 } 117 118 } 119 }
View Code

  1 using System;
  2 using System.Collections.Generic;
  3 using System.Linq;
  4 using System.Text;
  5 using System.IO;
  6 using System.Reflection;
  7 
  8 namespace CommonLib
  9 {
 10     /// <summary>
 11     /// 日誌類型
 12     /// </summary>
 13     public enum LogType
 14     {
 15         All,
 16         Information,
 17         Debug,
 18         Success,
 19         Failure,
 20         Warning,
 21         Error
 22     }
 23 
 24 
 25     public class Logger
 26     {
 27 
 28         #region Instance
 29         private static object logLock;
 30 
 31         private static Logger _instance;
 32 
 33         private static string logFileName;
 34         private Logger() { }
 35 
 36         /// <summary>
 37         /// Logger instance
 38         /// </summary>
 39         public static Logger Instance
 40         {
 41             get
 42             {
 43                 if (_instance == null)
 44                 {
 45                     _instance = new Logger();
 46                     logLock = new object();
 47                     //logFileName = Guid.NewGuid() + ".log";
 48                     logFileName = DateTime.Now.Hour.ToString("00") + DateTime.Now.Minute.ToString("00") +DateTime.Now.Second.ToString("00") + ".log";
 49                 }
 50                 return _instance;
 51             }
 52         }
 53         #endregion
 54 
 55         /// <summary>
 56         /// Write log to log file
 57         /// </summary>
 58         /// <param name="logContent">Log content</param>
 59         /// <param name="logType">Log type</param>
 60         public void WriteLog(string logContent, LogType logType = LogType.Information, string fileName = null)
 61         {
 62             try
 63             {
 64                 string basePath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
 65                 basePath = Directory.GetCurrentDirectory(); //@"C:\APILogs";
 66                 if (!Directory.Exists(basePath + "\\Log"))
 67                 {
 68                     Directory.CreateDirectory(basePath + "\\Log");
 69                 }
 70 
 71                 string dataString = DateTime.Now.ToString("yyyy-MM-dd");
 72                 if (!Directory.Exists(basePath + "\\Log\\" + dataString))
 73                 {
 74                     Directory.CreateDirectory(basePath + "\\Log\\" + dataString);
 75                 }
 76 
 77                 string[] logText = new string[] { DateTime.Now.ToString("hh:mm:ss") + ": " + logType.ToString() + ": " + logContent };
 78                 if (!string.IsNullOrEmpty(fileName))
 79                 {
 80                     fileName = fileName + "_" + logFileName;
 81                 }
 82                 else
 83                 {
 84                     fileName = logFileName;
 85                     //fileName = DateTime.Now.ToString("hh:mm:ss");
 86                 }
 87 
 88                 lock (logLock)
 89                 {
 90                     File.AppendAllLines(basePath + "\\Log\\" + dataString + "\\" + fileName, logText);
 91                 }
 92             }
 93             catch (Exception) { }
 94         }
 95 
 96         /// <summary>
 97         /// Write exception to log file
 98         /// </summary>
 99         /// <param name="exception">Exception</param>
100         public void WriteException(Exception exception, string specialText = null)
101         {
102             if (exception != null)
103             {
104                 Type exceptionType = exception.GetType();
105                 string text = string.Empty;
106                 if (!string.IsNullOrEmpty(specialText))
107                 {
108                     text = text + specialText + Environment.NewLine;
109                 }
110                 text = "Exception: " + exceptionType.Name + Environment.NewLine;
111                 text += "               " + "Message: " + exception.Message + Environment.NewLine;
112                 text += "               " + "Source: " + exception.Source + Environment.NewLine;
113                 text += "               " + "StackTrace: " + exception.StackTrace + Environment.NewLine;
114                 WriteLog(text, LogType.Error);
115             }
116         }
117 
118     }
119 }

為App添加Log日誌文件