C#使用正则表达式读取log4net日志文件

来源:互联网 发布:我的体育老师 知乎 编辑:程序博客网 时间:2024/04/30 05:27
2014-02-11 14:32:00,341 [6] INFO  LOGGER [(null)] - HELLO WORLD.2014-02-11 14:32:04,431 [1] INFO  LOGGER [(null)] - LOG TEXT.2014-02-11 14:32:04,433 [1] INFO  LOGGER [(null)] - THIS IS A VERY LONG TEXT.2014-02-11 14:32:37,197 [1] INFO  LOGGER [(null)] - BYE.

log4net可以输出形如上面的文本日志。

可以使用下面的方法进行读取:

DataTable dt = new DataTable();dt.Columns.AddRange(new[] { new DataColumn("TIME"),new DataColumn("THREAD"),new DataColumn("PRIORITY"),new DataColumn("LOGGER"),new DataColumn("MESSAGE"),});//读取文件string s = "";using(FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)){using(StreamReader sr = new StreamReader(fs, System.Text.Encoding.Default)){s = sr.ReadToEnd();}                }//正则表达式匹配,注意RegexOptions.RightToLeftvar matches = Regex.Matches(s, @"(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2},\d{3}) \[(\d+)] ([A-Z, ]{5}) ([A-Z,a-z,0-9, ]+).*?- ([\s\S]*?)", RegexOptions.RightToLeft);foreach (Match m in matches){var time = m.Groups[1].Value;var thread = m.Groups[2].Value;var priority = m.Groups[3].Value;var logger = m.Groups[4].Value;var msg = m.Groups[5].Value;var dr = dt.NewRow();dr.ItemArray = new[] { time, thread, priority, logger, msg };dt.Rows.InsertAt(dr, 0);}


0 0
原创粉丝点击