需求如下:
1.每条Log 有4个信息,时间,级别,类名(取每个调用该Log库的类的类名),内容
2.既然是同一个文件供多个进程来写,自然要实现写互斥
3.写log时先判断文件是否存在,不存在自己生成一个,存在的话直接打开请问C#里有没有直接支持上面需求的Log类 (就像java的Log4j一样)
如果没有,请问各位高手,针对我上面提的这些需求,有什么简便的设计方法么?
1.每条Log 有4个信息,时间,级别,类名(取每个调用该Log库的类的类名),内容
2.既然是同一个文件供多个进程来写,自然要实现写互斥
3.写log时先判断文件是否存在,不存在自己生成一个,存在的话直接打开请问C#里有没有直接支持上面需求的Log类 (就像java的Log4j一样)
如果没有,请问各位高手,针对我上面提的这些需求,有什么简便的设计方法么?
解决方案 »
- 大侠:请问为什么要出现Bitmap类和Graphics类这两种类同时出现啊?
- 关于ComBox控件的问题
- C#.net 如何调用VB6生成的Dll?
- 关闭imageList中的图片问题
- 求教--动态treeview判定的子接点
- C#异步winsock编程,添加系统自带的心跳包,有时新连接的客户端连不上,但是已经连接的正常传输数据
- 我是个初学者,想请教一个C#中动态添加控件的问题,望大侠们指点迷津
- 如何屏蔽U盘
- 关于 C# Form DataGrid控件的问题,非ASP.NET中的DataGrid 急切待解决???
- 高手拉我一吧,有關.Net製作SetUp
- ***一个既简单而又困难的问题,C#应用程序启动时报TypeInitializationException,不知道什么原因,请教***
- X509Certificate2UI这个C#自带的恶控件如何才能居中显示?
public static Mutex LogMutex=new Mutex();
private clsConst LogPen = new clsConst();private void WriteLog(string LogMsg)
{ //根据时间每天创建一个日志文件
try
{
LogMutex.WaitOne();
string logFilePath = "AlarmMeslogs\\";
string LogFileName = DateTime.Today.ToString("yyyyMMdd")+ DateTime.Now.Hour.ToString()+".Log";
string filepath=logFilePath+LogFileName;
if(!(Directory.Exists(logFilePath)))
Directory.CreateDirectory(logFilePath);
StreamWriter sw=new StreamWriter(filepath,true,Encoding.Unicode);
sw.WriteLine(DateTime.Now .ToLongTimeString() + " " + LogMsg);
sw.Close();
}
catch(Exception error)
{
LogPen.WriteLog("Result - Adding Items:"+error.Message+"【AlarmWriteLog()】");
}
finally
{
LogMutex.ReleaseMutex();
}
}
如果读或写失败,将log信息存入cache
略过此次读写
待文件可访问时再写入进去