// static void Example200(TextReader textReader) { var reader = new W3CReader(textReader); foreach (var webevent in reader.Read().Where(w => w.Status >= 200 && w.Status < 300) .OrderBy(w => w.Status) .ThenBy(w => w.Date) .ThenBy(w => w.UriStem) .ThenBy(w => w.UriQuery)) { Console.WriteLine("{0} {1}", webevent.Status.ToString().Red().Bold(), webevent.UriStem); } }
static void CountOfExtensionsRequested(TextReader textReader) { var q = new W3CReader(textReader).Read() .GroupBy(r => ExtractExtension(r.UriStem)) .Select(g => new { Count = g.Count(), Paths = g.Key }).OrderByDescending(g => g.Count); foreach (var r in q) { Console.WriteLine("{0}\t{1}", r.Count, r.Paths); } }
static void RequestsByHourPerDay(TextReader textReader) { var q = new W3CReader(textReader).Read() .GroupBy(r => r.UtcTime().RoundUp(TimeSpan.FromHours(1))) .Select(g => new { HalfHour = g.Key, Count = g.Count() }); foreach (var r in q) { Console.WriteLine("{0}\t{1}", r.HalfHour, r.Count); } }
static void AverageResponseTimeByHalfHour(TextReader textReader) { var q = new W3CReader(textReader).Read() .Where(e => e.Status < 400) .GroupBy(r => r.UtcTime().RoundUp(TimeSpan.FromMinutes(30))) .Select(g => new { HalfHour = g.Key, AverageTimeTaken = g.Average((e) => e.TimeTaken) }); foreach (var r in q) { Console.WriteLine("{0}\t{1}", r.HalfHour.ToLocalTime(), r.AverageTimeTaken); } }
// Return a listing of Web pages, and referring pages, that returned a 500 status code static void Example500(TextReader textReader) { var reader = new W3CReader(textReader); foreach (var webevent in reader.Read().Where(w => w.Status >= 500 && w.Status <= 600) .OrderBy(w => w.Status) .ThenBy(w => w.Date) .ThenBy(w => w.UriStem) .ThenBy(w => w.UriQuery)) { Console.WriteLine("{0}\t{1}\t{2}{3}", webevent.Status.ToString().Red().Bold(), webevent.ToLocalTime(), webevent.UriStem.Blue(), webevent.UriQuery.Yellow()); } }
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); } } }