解析 IIS 日志文件 - 是否有 LogParser 的替代方案
Parse IIS log file - is there an alternative to LogParser
我需要解析 IIS 日志文件。是否有 LogParser 的任何 替代品,一个简单的 class 来查询日志文件?
我只需要知道我在 2 个日期之间收到了多少请求。
这是 iis 日志文件的示例:
#Software: Microsoft Internet Information Services 7.5
#Version: 1.0
#Date: 2014-08-26 12:20:57
#Fields: date time s-sitename s-computername s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs-version cs(User-Agent) cs(Cookie) cs(Referer) cs-host sc-status sc-substatus sc-win32-status sc-bytes cs-bytes time-taken
2014-08-26 12:20:57 W3SVC1 QXXXSXXXX 172.25.161.53 POST /XXXX/XXX/XXXX/XXXXX/1.0/XXXX/XXXXXXXX/xxxxxx.svc - 443 - 999.99.999.999 HTTP/1.1 - - - xxxx.xxxx.xxx.xxx.xxxx.xxxx.xxx.com 200 0 0 4302 5562 1560
您可以使用Tx (LINQ to Logs and Traces) , you can install it via nuget
并像这样使用它:
var iisLog = W3CEnumerable.FromFile(pathToLog);
int nbOfLogsForLastHour = iisLog.Where(x => x.dateTime > DateTime.Now.AddHours(-1)).Count();
如果日志文件被其他进程使用,可以使用W3CEnumerable.FromStream
现在是 2017 年,LogParser 仍然是闭源的。此外,云解决方案提供的所有工具似乎都使解析 IIS 日志的需要成为过去。但由于我也在处理遗留应用程序,所以我使用 .NET 核心编写了这个简单的解析器。
using System;
using System.IO;
using W3CParser.Extensions;
using W3CParser.Instrumentation;
using W3CParser.Parser;
namespace W3CParser
{
class Program
{
static void Main(string[] args)
{
var reader = new W3CReader(File.OpenText(args.Length > 0 ? args[0] : "Data/foobar.log"));
using (new ConsoleAutoStopWatch())
{
foreach (var @event in reader.Read())
{
Console.WriteLine("{0} ({1}):{2}/{3} {4} (bytes sent)",
@event.Status.ToString().Red().Bold(),
@event.ToLocalTime(),
@event.UriStem.Green(),
@event.UriQuery,
@event.BytesSent);
}
}
}
}
}
您可以使用 IISLogParser 并通过 nuget 安装它,它支持大文件 (> 1Gb)
List<IISLogEvent> logs = new List<IISLogEvent>();
using (ParserEngine parser = new ParserEngine([filepath]))
{
while (parser.MissingRecords)
{
logs = parser.ParseLog().ToList();
}
}
如果您要处理大量 and/or 分散位置的 IIS 日志文件,那么 SpectX 是一个方便的工具,因为您不必摄取日志并且可以 运行 直接查询多个原始文件。每个内核的平均处理速度 - 350MB/秒。
它不是开源的,但功能齐全30-day trial is free。
教程:
Parsing IIS logs。
Analyzing IIS logs - 20 sample queries。
要过滤时间段,请按日期对日志进行排序并过滤您需要的时间段,例如:
| sort(date_time desc)
| filter(date_time > T('2019-11-01 08:48:20.000 +0200'))
| filter(date_time < T('2019-11-05 11:48:20.000 +0200'));
我需要解析 IIS 日志文件。是否有 LogParser 的任何 替代品,一个简单的 class 来查询日志文件?
我只需要知道我在 2 个日期之间收到了多少请求。
这是 iis 日志文件的示例:
#Software: Microsoft Internet Information Services 7.5
#Version: 1.0
#Date: 2014-08-26 12:20:57
#Fields: date time s-sitename s-computername s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs-version cs(User-Agent) cs(Cookie) cs(Referer) cs-host sc-status sc-substatus sc-win32-status sc-bytes cs-bytes time-taken
2014-08-26 12:20:57 W3SVC1 QXXXSXXXX 172.25.161.53 POST /XXXX/XXX/XXXX/XXXXX/1.0/XXXX/XXXXXXXX/xxxxxx.svc - 443 - 999.99.999.999 HTTP/1.1 - - - xxxx.xxxx.xxx.xxx.xxxx.xxxx.xxx.com 200 0 0 4302 5562 1560
您可以使用Tx (LINQ to Logs and Traces) , you can install it via nuget
并像这样使用它:
var iisLog = W3CEnumerable.FromFile(pathToLog);
int nbOfLogsForLastHour = iisLog.Where(x => x.dateTime > DateTime.Now.AddHours(-1)).Count();
如果日志文件被其他进程使用,可以使用W3CEnumerable.FromStream
现在是 2017 年,LogParser 仍然是闭源的。此外,云解决方案提供的所有工具似乎都使解析 IIS 日志的需要成为过去。但由于我也在处理遗留应用程序,所以我使用 .NET 核心编写了这个简单的解析器。
using System;
using System.IO;
using W3CParser.Extensions;
using W3CParser.Instrumentation;
using W3CParser.Parser;
namespace W3CParser
{
class Program
{
static void Main(string[] args)
{
var reader = new W3CReader(File.OpenText(args.Length > 0 ? args[0] : "Data/foobar.log"));
using (new ConsoleAutoStopWatch())
{
foreach (var @event in reader.Read())
{
Console.WriteLine("{0} ({1}):{2}/{3} {4} (bytes sent)",
@event.Status.ToString().Red().Bold(),
@event.ToLocalTime(),
@event.UriStem.Green(),
@event.UriQuery,
@event.BytesSent);
}
}
}
}
}
您可以使用 IISLogParser 并通过 nuget 安装它,它支持大文件 (> 1Gb)
List<IISLogEvent> logs = new List<IISLogEvent>();
using (ParserEngine parser = new ParserEngine([filepath]))
{
while (parser.MissingRecords)
{
logs = parser.ParseLog().ToList();
}
}
如果您要处理大量 and/or 分散位置的 IIS 日志文件,那么 SpectX 是一个方便的工具,因为您不必摄取日志并且可以 运行 直接查询多个原始文件。每个内核的平均处理速度 - 350MB/秒。
它不是开源的,但功能齐全30-day trial is free。
教程: Parsing IIS logs。 Analyzing IIS logs - 20 sample queries。
要过滤时间段,请按日期对日志进行排序并过滤您需要的时间段,例如:
| sort(date_time desc)
| filter(date_time > T('2019-11-01 08:48:20.000 +0200'))
| filter(date_time < T('2019-11-05 11:48:20.000 +0200'));