.net 自带的日志功能 System.IO.Log (写入)

在.net 4.0中 framework自带了一组写日志的类,都位于System.IO.Log 命名空间下

其中LogRecordSequence 提供了对公用日志文件系统 (CLFS) 日志的实现(xp不支持...)

FileRecordSequence提供了对普通日志文件的支持

 

代码
string logName = "aaa.txt";
string logContainer = "MyExtent1";
int containerSize = 1024 * 1024;
LogRecordSequence sequence
= new LogRecordSequence(logName,
FileMode.CreateNew,
FileAccess.ReadWrite,
FileShare.None);
sequence.LogStore.Extents.Add(logContainer, containerSize);

//准备写日志
string str = "日志内容";
Encoding enc
= Encoding.Unicode;
byte[] array = enc.GetBytes(str);
ArraySegment
<byte>[] segments = new ArraySegment<byte>[1];
segments[
0] = new ArraySegment<byte>(array);
var list
= Array.AsReadOnly<ArraySegment<byte>>(segments);

//这句话就是写日志了
sequence.Append(list, SequenceNumber.Invalid, SequenceNumber.Invalid, RecordAppendOptions.ForceFlush);

Console.ReadLine();
return;

 

  

LogRecordSequence 的性能非常好,

注:在我的机器上(windows 2008) 测试写入10000条耗时0.03秒 .(不要每写一条都Flush : 设置参数 RecordAppendOptions.None)

 

PS: 可以将 RetryAppend 设置为true 开启功能: 文件满的时候,自动生成另一个文件写入(如果不设置 就会抛出日志已满的异常)

PS: 不支持自动时间格式的文件名,很郁闷

posted on 2011-01-18 09:56  听说读写  阅读(5895)  评论(1编辑  收藏  举报

导航