public async Task ParseNPSSampleLog() { var parserOptions = new GenericDelimitedLogParserOptions { CSVEscapeMode = false, TimestampField = "{Record-Date} {Record-Time}", TimestampFormat = "MM/dd/yyyy HH:mm:ss", Headers = "ComputerName,ServiceName,Record-Date,Record-Time,Packet-Type,User-Name,Fully-Qualified-Distinguished-Name,Called-Station-ID,Calling-Station-ID,Callback-Number,Framed-IP-Address,NAS-Identifier,NAS-IP-Address,NAS-Port,Client-Vendor,Client-IP-Address,Client-Friendly-Name,Event-Timestamp,Port-Limit,NAS-Port-Type,Connect-Info,Framed-Protocol,Service-Type,Authentication-Type,Policy-Name,Reason-Code,Class,Session-Timeout,Idle-Timeout,Termination-Action,EAP-Friendly-Name,Acct-Status-Type,Acct-Delay-Time,Acct-Input-Octets,Acct-Output-Octets,Acct-Session-Id,Acct-Authentic,Acct-Session-Time,Acct-Input-Packets,Acct-Output-Packets,Acct-Terminate-Cause,Acct-Multi-Ssn-ID,Acct-Link-Count,Acct-Interim-Interval,Tunnel-Type,Tunnel-Medium-Type,Tunnel-Client-Endpt,Tunnel-Server-Endpt,Acct-Tunnel-Conn,Tunnel-Pvt-Group-ID,Tunnel-Assignment-ID,Tunnel-Preference,MS-Acct-Auth-Type,MS-Acct-EAP-Type,MS-RAS-Version,MS-RAS-Vendor,MS-CHAP-Error,MS-CHAP-Domain,MS-MPPE-Encryption-Types,MS-MPPE-Encryption-Policy,Proxy-Policy-Name,Provider-Type,Provider-Name,Remote-Server-Address,MS-RAS-Client-Name,MS-RAS-Client-Version" }; var records = new List <IEnvelope <KeyValueLogRecord> >(); var parser = new GenericDelimitedLogParser(NullLogger.Instance, ",", parserOptions); await parser.ParseRecordsAsync(new DelimitedTextLogContext { FilePath = Path.Combine(AppContext.BaseDirectory, "Samples/NPSSample.log") }, records, int.MaxValue); Assert.Equal(20, records.Count); foreach (var record in records) { Assert.Equal("\"NPS-MASTER\"", record.Data["ComputerName"]); Assert.Equal("\"IAS\"", record.Data["ServiceName"]); Assert.Equal(2018, record.Timestamp.Year); } }
public async Task ParseDHCPSampleLog() { var parserOptions = new GenericDelimitedLogParserOptions { CSVEscapeMode = false, TimestampField = "{Date} {Time}", TimestampFormat = "MM/dd/yy HH:mm:ss", RecordPattern = "^\\d{2},\\d{2}/\\d{2}/\\d{2},\\d{2}:\\d{2}:\\d{2}.*", HeadersPattern = "^ID.*", }; var records = new List <IEnvelope <KeyValueLogRecord> >(); var parser = new GenericDelimitedLogParser(NullLogger.Instance, ",", parserOptions); await parser.ParseRecordsAsync(new DelimitedTextLogContext { FilePath = Path.Combine(AppContext.BaseDirectory, "Samples/DHCPSample.log") }, records, 1000); Assert.Equal(3, records.Count); var record0 = records[0]; Assert.Equal("24", record0.Data["ID"]); Assert.Equal(new DateTime(2017, 9, 29, 0, 0, 4), records[0].Timestamp); var record1 = records[1]; Assert.Equal("25", record1.Data["ID"]); Assert.Equal("0 leases expired and 0 leases deleted", record1.Data["Description"]); Assert.Equal(36, ((ILogEnvelope)record1).LineNumber); }