在程序发布到服务器上的时候,不能在像本地执行一样可以调试,在发生错误时候,往往不能很方便的查找错误。将错误信息写入文件是一种比较常用的处理方法。以下是一个日志类,实现以下功能:
1)按日期每天生产不同日志文件,方便按照日期来查找日志。
2)按日志类型生产不同的文件,比如 跟踪信息、警告信息、错误信息用不同的日志文件来记录;方便我们查找指定类型的日志。
3)可以指定保持日志文件文件夹,如果不指定日志文件夹,Web应用保持到Bin文件夹,Windows Forms应用保持到.EXE文件所在的文件夹。
4)可以指定日志的前缀
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Web; /// <summary> /// LogManager 的摘要说明 /// </summary> /// 1)按日期每天生产不同日志文件,方便按照日期来查找日志。 /// 2)按日志类型生产不同的文件,比如 跟踪信息、警告信息、错误信息用不同的日志文件来记录;方便我们查找指定类型的日志。 /// 3)可以指定保持日志文件文件夹,如果不指定日志文件夹,Web应用保持到Bin文件夹,Windows Forms应用保持到.EXE文件所在的文件夹。 /// 4)可以指定日志文件的前缀。 public class LogManager { private static string logPath = string.Empty; /// <summary> /// 保存日志的文件夹 /// </summary> public static string LogPath { get { if (logPath == string.Empty) { if (System.Web.HttpContext.Current == null) // Windows Forms 应用 logPath = AppDomain.CurrentDomain.BaseDirectory; //根目录 else // Web 应用 logPath = AppDomain.CurrentDomain.BaseDirectory + @"bin/"; //存放在bin文件夹下 } return logPath; } set { logPath = value; } } private static string logFielPrefix = string.Empty; /// <summary> /// 日志文件前缀 /// </summary> public static string LogFielPrefix { get { return logFielPrefix; } set { logFielPrefix = value; } } /// <summary> /// 写日志 /// </summary> public static void WriteLog(string logFile, string msg) { try { System.IO.StreamWriter sw = System.IO.File.AppendText( LogPath + LogFielPrefix + logFile + "_" + DateTime.Now.ToString("yyyyMMdd") + ".Log" ); StringBuilder sb = new StringBuilder(); //sb.Append("---------------------------------------------------------------------"); sb.Append(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss: ") + "错误信息:"); //sb.Append("---------------------------------------------------------------------"); sb.Append(msg); //sb.Append("---------------------------------------------------------------------"); sw.WriteLine(sb.ToString()); sw.Close(); } catch(Exception IoEx) { WriteLog(LogFile.Error, IoEx.Message.ToString()); } } /// <summary> /// 写日志 /// </summary> public static void WriteLog(LogFile logFile, string msg) { WriteLog(logFile.ToString(), msg); } } /// <summary> /// 日志类型 /// </summary> public enum LogFile { Trace, //跟踪文件 Warning,//警告文件 Error, SQL }
调用
LogManager.LogPath = "D://"; //文件目录 不赋值存放在默认位置 LogManager.LogFielPrefix = "02"; //文件前缀 LogManager.WriteLog(LogFile.Trace,"26568235673265874");