不管是Web應用還是Windows Forms 應用,系統日志我們都經常用到。日志可以幫助我們跟蹤監視系統的運行狀況,及時發現錯誤,輸出調式信息等。記錄日志的方法很多,比如用文本文件、XML文件、數據庫等。而用文本文件記錄日志是最常用的方法之一。
這里就是一個用文本文件記錄日志的簡單實用的日志類,它有如下幾個特點:
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\ " ;
}
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 "
);
sw.WriteLine(DateTime.Now.ToString( " yyyy-MM-dd HH:mm:ss: " ) + msg);
sw.Close();
}
catch
{ }
}
/// <summary>
/// 寫日志
/// </summary>
public static void WriteLog(LogFile logFile, string msg)
{
WriteLog(logFile.ToString(), msg);
}
}
/// <summary>
/// 日志類型
/// </summary>
public enum LogFile
{
Trace,
Warning,
Error,
SQL
}
{
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\ " ;
}
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 "
);
sw.WriteLine(DateTime.Now.ToString( " yyyy-MM-dd HH:mm:ss: " ) + msg);
sw.Close();
}
catch
{ }
}
/// <summary>
/// 寫日志
/// </summary>
public static void WriteLog(LogFile logFile, string msg)
{
WriteLog(logFile.ToString(), msg);
}
}
/// <summary>
/// 日志類型
/// </summary>
public enum LogFile
{
Trace,
Warning,
Error,
SQL
}
使用方法:
LogManager.LogFielPrefix
=
"
ERP
"
;
LogManager.LogPath = @" C:\ " ;
LogManager.WriteLog(LogFile.Trace, " A test Msg. " );
LogManager.LogPath = @" C:\ " ;
LogManager.WriteLog(LogFile.Trace, " A test Msg. " );