用Trace与TextWriterTraceListener实现的类似Log4Net的日志工具
很实用,希望有帮助到大家
/// <summary> /// 日志类/ /// 默认路径在Debug下的log文件夹下(若要修改路径可设置LogPath属性)/ /// 日志文件名称统一为当天:yyyy-MM-dd.log /// </summary> public class Logger { private static string _logPath = AppDomain.CurrentDomain.BaseDirectory + "log"; /// <summary> /// 保存日志的文件路径 /// </summary> public static string LogPath { get { return _logPath; } set { _logPath = value; } } /// <summary> /// 当前日期 /// </summary> private static DateTime CurrentDate = DateTime.Now; /// <summary> /// 是否第一次打开或者日志文件名称已经改变 /// 默认为true,即第一次打开日志文件 /// </summary> private static bool firstTimeOpenOrFileNameChanged = true; public static void LogInfo(string message) { Log(message, LogType.INFO); } public static void LogInfo(string message,Exception ex) { Log(message, ex,LogType.INFO); } public static void LogError(string message) { Log(message, LogType.ERROR); } public static void LogError(string message, Exception ex) { Log(message, ex, LogType.ERROR); } public static void Fail(string message) { Log(message, LogType.FAIL); } public static void Fail(string message, Exception ex) { Log(message, ex, LogType.FAIL); } public static void Warn(string message) { Log(message, LogType.WARN); } public static void Warn(string message, Exception ex) { Log(message, ex, LogType.WARN); } public static void Debug(string message) { #if DEBUG Log(message,LogType.DEBUG); #endif } public static void Debug(string message, Exception ex) { #if DEBUG Log(message, ex, LogType.DEBUG); #endif } public static void Log(string message, LogType type) { if (!Directory.Exists(_logPath)) { Directory.CreateDirectory(_logPath); } //总是检查今天是否已经过了 //日期过了,日志文件名称也发生了改变 if (CurrentDate.Subtract(DateTime.Now).Days != 0) { firstTimeOpenOrFileNameChanged = true; CurrentDate = DateTime.Now; } if (firstTimeOpenOrFileNameChanged) { firstTimeOpenOrFileNameChanged = false;//设置为false string logFile = Path.Combine(_logPath, CurrentDate.ToString("yyyy-MM-dd") + ".log"); FileStream fileStream = File.Open(logFile, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite); fileStream.Position = fileStream.Length;//定位到文件末尾,追加 TextWriterTraceListener listener = new TextWriterTraceListener(fileStream); Trace.AutoFlush = true; Trace.Listeners.Add(listener); } Trace.WriteLine(""); Trace.WriteLine(string.Format("{0} - {1} - {2}", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"), type, message)); } public static void Log(string message, Exception ex, LogType type) { Log(message, type); Trace.WriteLine(string.Format("[Exception]{0}", ex)); } public enum LogType { DEBUG, INFO, ERROR, WARN, FAIL, } }