多的不说,有用的着的看看代码吧:
//=========================================
//Anthor : Andy Luo
//Function Description: 日志处理
//CopyRight By arping.cnblogs.net 200703
//=========================================
using System;
using System.Text;
using System.IO;
using System.Diagnostics;

namespace Logger


{

enum#region enum
public enum LogLevel

{
Debug, Message, Error
}

public enum RecLogType

{
File,EventLog
}

#endregion

public class Logger

{
private Logger()

{
//
// TODO: 在此处添加构造函数逻辑
//
}

protected const string SysFileDir = @"C:\Temp";
protected const string SysFileName = "Tools.log";
protected const string DefaultLogFileName = @"c:\temp\AndyLuoLogger.log";
protected const string ConfigPath = "LogPath";
protected const string ConfigName = "LogName";


Property#region Property
private string FileDir = string.Empty;
private string FileName = string.Empty;

private static Logger _instance = null;
private static Logger Instance

{
get

{
if(_instance == null)

{
_instance = new Logger();
}
return _instance;
}
}
private LogLevel _objLogLevel;
public LogLevel LogLevel

{

set
{ _objLogLevel = value;}

get
{ return _objLogLevel;}
}

private string _Msg;
public string Msg

{

set
{ _Msg = value;}

get
{ return _Msg;}
}

private string Date

{

get
{ return System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");}
}
#endregion


Public NewLog#region Public NewLog
//config中指定路径
public static void NewLog(LogLevel objLogLevel,string Msg)

{
Instance.AddLog(objLogLevel,Msg);
}

public static void NewLog(System.Exception ex)

{
Instance.AddLog(ex);
}

public static void NewLog(LogLevel objLogLevel,string Msg,string FilePath,string FileName)

{
Instance.AddLog(objLogLevel,Msg,FilePath,FileName);
}

public static void NewLog(System.Exception ex,string FilePath,string FileName)

{
Instance.AddLog(ex,FilePath,FileName);
}
#endregion


AddLog()#region AddLog()
private void AddLog(LogLevel objLogLevel,string Msg)

{
this.LogLevel = objLogLevel;
this.Msg = Msg;
this.AddLog();
}

private void AddLog(LogLevel objLogLevel,string Msg,string FilePath,string FileName)

{
this.LogLevel = objLogLevel;
this.Msg = Msg;
this.FileDir = FilePath;
this.FileName = FileName;
this.AddLog();
}

private void AddLog(System.Exception ex)

{
this.LogLevel = LogLevel.Error;
this.Msg = ex.Message;
this.AddLog();
}

private void AddLog(System.Exception ex,string FilePath,string FileName)

{
this.LogLevel = LogLevel.Error;
this.Msg = ex.Message;
this.FileDir = FilePath;
this.FileName = FileName;
this.AddLog();
}

private void AddLog()

{
LogLevel _LogLevel = LogLevel.Debug;
RecLogType _RecLogType = RecLogType.File;

if(this.FileDir == null || this.FileDir.Length == 0)

{
string sysPath = System.Configuration.ConfigurationSettings.AppSettings[ConfigPath];
if(sysPath != null && sysPath.Trim().Length >0)

{
this.FileDir = sysPath;
}
else

{
this.FileDir = SysFileDir;
}
}

if(this.FileName == null || this.FileName.Length == 0)

{
string sysName = System.Configuration.ConfigurationSettings.AppSettings[ConfigName];
if(sysName != null && sysName.Trim().Length >0)

{
this.FileName = sysName;
}
else

{
this.FileName = SysFileName;
}
}

if(_RecLogType == RecLogType.File)

{
if(_LogLevel == LogLevel.Debug)

{
this.Write2File();
}
else if(_LogLevel == LogLevel.Message)

{
if(this.LogLevel != LogLevel.Debug)

{
this.Write2File();
}
}
else

{
if(this.LogLevel == LogLevel.Error)

{
this.Write2File();
}
}
}
else

{
if(_LogLevel == LogLevel.Debug)

{
this.Write2EventLog();
}
else if(_LogLevel == LogLevel.Message)

{
if(this.LogLevel != LogLevel.Debug)

{
this.Write2EventLog();
}
}
else

{
if(this.LogLevel == LogLevel.Error)

{
this.Write2EventLog();
}
}
}

}
#endregion


GetLogFile#region GetLogFile
private string GetLogFile()

{
if(!System.IO.Directory.Exists(this.FileDir))

{
System.IO.Directory.CreateDirectory(this.FileDir);
}

DirectoryInfo di = new DirectoryInfo(this.FileDir);
bool flag = true;
int index = 0;
string result = string.Empty;
StringBuilder sb = new StringBuilder();
sb.Append(this.FileDir);
sb.Append(@"\");
sb.Append(System.DateTime.Now.ToString("yyyy-MM-dd"));
sb.Append(@"-");
while(flag)

{
index = index + 1;
result = sb.ToString() + index.ToString("000") + @"-" + this.FileName;
if(!System.IO.File.Exists(result))

{
StreamWriter sw = System.IO.File.CreateText(result);
sw.Close();
flag = false;
}
else

{
FileInfo fi = new FileInfo(result);
if(fi.Length < 511*1024)

{
flag = false;
}
}
}
return result;

}

#endregion


Write2File()#region Write2File()
private void Write2File()

{
try

{
string filename = this.GetLogFile();
StreamWriter w = File.AppendText(filename);
StringBuilder sb = new StringBuilder(this.Date);
sb.Append(" ");
sb.Append(this.LogLevel.ToString());
sb.Append(" ");
sb.Append(this.Msg);
w.WriteLine(sb.ToString());
w.Flush();
w.Close();
}
catch(Exception ex)

{
StreamWriter w = File.AppendText(DefaultLogFileName);
w.WriteLine(System.DateTime.Now.ToString()+" "+ex.Message);
w.Flush();
w.Close();
}

}

#endregion


Write2EventLog()#region Write2EventLog()
private void Write2EventLog()

{
if(!EventLog.SourceExists("BenQGuru.eSCM.Management"))

{
EventLog.CreateEventSource("BenQGuru.eSCM.Management","BenQGuru.eSCM.Management Log");
}
EventLogEntryType type ;
if(this.LogLevel == LogLevel.Error)

{
type = EventLogEntryType.Error;
}
else

{
type = EventLogEntryType.Information;
}
EventLog.WriteEntry("BenQGuru.eSCM.Management",this.Msg,type);

/**//* 说明如果是Windows 2000:
1. Click "Start->Run".
2. Enter "regedt32"
3. Click "Security->Permission" on the menu bar.
4. 给 "ASPNET" 赋予在下面键值上合适的权限。(如果您在ASP.NET中impersonate到其他的用户, 请合适的替换ASPNET)
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog
5.在machine_config文件中将 <processModel
.username="asp.net"
>中的username改为username="system"即可(需重新启动机器)。
*/
}

#endregion



}
}























































































































































































































































































































































































































































