.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: 不支持自動時間格式的文件名,很郁悶

浙公網安備 33010602011771號