您的位置:首页 > 编程语言 > C#

C#2005 一个简单的写日志类

2008-04-11 15:23 281 查看
using System;
using System.Windows.Forms;
using System.Threading;
using System.IO;

namespace FileControl
{
/// <summary>
/// Log类的摘要说明。
/// </summary>
public class Log
{
static object writeLog = 0;

private static string logFileNameDefine ="PoliScan-M.evt";

private const int FILEMAXLENGTH = 1024 * 128;
public const int LOGTYPEDEFAULT = 0;
public const int LOGTYPESYSTEM = 1;
public const int LOGTYPENORMAL = 2;
public const int LOGTYPEWARNING = 3;
public const int LOGTYPEERROR = 4;

/// <summary>
/// Log类的普通构造函数
/// </summary>
public Log()
{

}

/// <summary>
/// Log类静态构造函数
/// </summary>
static Log()
{

}

/// <summary>
/// 设置日志文件名
/// </summary>
/// <param name="logFileName">日志文件名[默认为PoliScan-M.evt]</param>
public static bool SetLogFileName(string logFileName)
{
if ((logFileName.Length > 4) && (logFileName.IndexOf(".") != -1))
{
logFileNameDefine = logFileName;
return true;
}
else
{
return false;
}
}

/// <summary>
/// 写日志
/// </summary>
/// <param name="eventDescription">信息的详细描述</param>
public static void WriteToFile(string eventDescription)
{
WriteToFile(0,"@系统记录@",eventDescription,false);
}

/// <summary>
/// 写日志
/// </summary>
/// <param name="eventSite">信息写入时程序位置或事件位置</param>
/// <param name="eventDescription">信息的详细描述</param>
public static void WriteToFile(string eventSite,string eventDescription)
{
WriteToFile(0,eventSite,eventDescription,false);
}

/// <summary>
/// 写日志
/// </summary>
/// <param name="eventState">信息标志位,标识不同类型的信息</param>
/// <param name="eventSite">信息写入时程序位置或事件位置</param>
/// <param name="eventDescription">信息的详细描述</param>
public static void WriteToFile(int eventState,string eventSite,string eventDescription)
{
WriteToFile(eventState,eventSite,eventDescription,false);
}

/// <summary>
/// 写日志
/// </summary>
/// <param name="eventState">信息标志位,标识不同类型的信息</param>
/// <param name="eventSite">信息写入时程序位置或事件位置</param>
/// <param name="eventDescription">信息的详细描述</param>
/// <param name="eventSeparate">是否需要添加分隔符</param>
public static void WriteToFile(int eventState,string eventSite,string eventDescription,bool eventSeparate)
{
Monitor.Enter(writeLog);

try
{
DateTime currnetTime = DateTime.Now;
DirectoryInfo logDirectory;
string logFile;
FileInfo logFileInfo;
StreamWriter streamFile;
string lineInfo;

logDirectory= new DirectoryInfo(Application.StartupPath + @"/Log") ;
if (!logDirectory.Exists)
{
logDirectory.Create();
}

logFile = Application.StartupPath + @"/Log/" + logFileNameDefine;
logFileInfo = new FileInfo(logFile);

if (logFileInfo.Exists)
{
if(logFileInfo.Length > FILEMAXLENGTH)
{
logFileInfo.Delete();
}
}

streamFile = new StreamWriter(logFile, true);
try
{
lineInfo = (currnetTime.ToString("[yyyy-MM-dd HH:mm:ss]")) + @"|" +
eventState.ToString() + @"|" +
eventSite + @"|" +
eventDescription;
if (eventSeparate)
{
streamFile.WriteLine("");
}
streamFile.WriteLine(lineInfo);
}
finally
{
streamFile.Close();
}
}
catch
{
}
finally
{
Monitor.Exit (writeLog);
}

return;
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: