public void CompressedReadWriteTests() { TestHelper.CleanupTestFolder(); string directoryPath = Path.Combine(TestHelper.TestFolder, "GzipCKMonWriterClientTest"); ActivityMonitor m = new ActivityMonitor(); var client = new CKMonWriterClient(directoryPath, 20000, LogFilter.Undefined, true); m.Output.RegisterClient(client); using (m.OpenWarn().Send("Group test")) { m.Info().Send("Line test"); } // This closes the client: the file is then compressed asynchronously // on a thread from the ThreadPool. Assert.That(client.IsOpened); m.Output.UnregisterClient(client); string ckmonPath = TestHelper.WaitForCkmonFilesInDirectory(directoryPath, 1)[0]; LogReader r = LogReader.Open(ckmonPath); r.MoveNext(); Assert.That(r.Current.LogType, Is.EqualTo(LogEntryType.OpenGroup)); Assert.That(r.Current.Text, Is.EqualTo("Group test")); r.MoveNext(); Assert.That(r.Current.LogType, Is.EqualTo(LogEntryType.Line)); Assert.That(r.Current.Text, Is.EqualTo("Line test")); r.MoveNext(); Assert.That(r.Current.LogType, Is.EqualTo(LogEntryType.CloseGroup)); bool hasRemainingEntries = r.MoveNext(); Assert.That(hasRemainingEntries, Is.False); }
public void LogEntry_write_and_read_back() { var exInner = new CKExceptionData("message", "typeof(exception)", "assemblyQualifiedName", "stackTrace", null, "fileName", "fusionLog", null, null); var ex2 = new CKExceptionData("message2", "typeof(exception2)", "assemblyQualifiedName2", "stackTrace2", exInner, "fileName2", "fusionLog2", null, null); var exL = new CKExceptionData("loader-message", "typeof(loader-exception)", "loader-assemblyQualifiedName", "loader-stackTrace", null, "loader-fileName", "loader-fusionLog", null, null); var exAgg = new CKExceptionData("agg-message", "typeof(agg-exception)", "agg-assemblyQualifiedName", "agg-stackTrace", ex2, "fileName", "fusionLog", null, new[] { ex2, exL }); var prevLog = DateTimeStamp.UtcNow; ILogEntry e1 = LogEntry.CreateLog("Text1", new DateTimeStamp(DateTime.UtcNow, 42), LogLevel.Info, "c:\\test.cs", 3712, ActivityMonitor.Tags.CreateDependentToken, exAgg); ILogEntry e2 = LogEntry.CreateMulticastLog("GOId", "3712", LogEntryType.Line, prevLog, 5, "Text2", DateTimeStamp.UtcNow, LogLevel.Fatal, null, 3712, ActivityMonitor.Tags.CreateDependentToken, exAgg);; using (var mem = new MemoryStream()) using (var w = new CKBinaryWriter(mem)) { w.Write(LogReader.CurrentStreamVersion); e1.WriteLogEntry(w); e2.WriteLogEntry(w); w.Write((byte)0); w.Flush(); byte[] versionBytes = new byte[4]; mem.Position = 0; mem.Read(versionBytes, 0, 4); BitConverter.ToInt32(versionBytes, 0).Should().Be(LogReader.CurrentStreamVersion); using (var reader = new LogReader(mem, LogReader.CurrentStreamVersion, 4)) { reader.MoveNext().Should().BeTrue(); reader.Current.Text.Should().Be(e1.Text); reader.Current.LogLevel.Should().Be(e1.LogLevel); reader.Current.LogTime.Should().Be(e1.LogTime); reader.Current.FileName.Should().Be(e1.FileName); reader.Current.LineNumber.Should().Be(e1.LineNumber); reader.Current.Exception.ExceptionTypeAssemblyQualifiedName.Should().Be(e1.Exception.ExceptionTypeAssemblyQualifiedName); reader.Current.Exception.ToString().Should().Be(e1.Exception.ToString()); reader.MoveNext().Should().BeTrue(); reader.CurrentMulticast.GrandOutputId.Should().Be("GOId"); reader.CurrentMulticast.MonitorId.Should().Be("3712"); reader.CurrentMulticast.PreviousEntryType.Should().Be(LogEntryType.Line); reader.CurrentMulticast.PreviousLogTime.Should().Be(prevLog); reader.Current.Text.Should().Be(e2.Text); reader.Current.LogTime.Should().Be(e2.LogTime); reader.Current.FileName.Should().BeNull(); reader.Current.LineNumber.Should().Be(0, "Since no file name is set, line number is 0."); reader.Current.Exception.ExceptionTypeAssemblyQualifiedName.Should().Be(e2.Exception.ExceptionTypeAssemblyQualifiedName); reader.Current.Exception.ToString().Should().Be(e2.Exception.ToString()); reader.MoveNext().Should().BeFalse(); reader.BadEndOfFileMarker.Should().BeFalse(); } } }
public void LogEntryReadWrite() { var exInner = new CKExceptionData( "message", "typeof(exception)", "assemblyQualifiedName", "stackTrace", null, "fileName", "fusionLog", null, null ); var ex2 = new CKExceptionData( "message2", "typeof(exception2)", "assemblyQualifiedName2", "stackTrace2", exInner, "fileName2", "fusionLog2", null, null ); var exL = new CKExceptionData( "loader-message", "typeof(loader-exception)", "loader-assemblyQualifiedName", "loader-stackTrace", null, "loader-fileName", "loader-fusionLog", null, null ); var exAgg = new CKExceptionData( "agg-message", "typeof(agg-exception)", "agg-assemblyQualifiedName", "agg-stackTrace", ex2, "fileName", "fusionLog", null, new[]{ ex2, exL } ); var prevLog = DateTimeStamp.UtcNow; ILogEntry e1 = LogEntry.CreateLog( "Text1", new DateTimeStamp( DateTime.UtcNow, 42 ), LogLevel.Info, "c:\\test.cs", 3712, ActivityMonitor.Tags.CreateDependentActivity, exAgg ); ILogEntry e2 = LogEntry.CreateMulticastLog( Guid.Empty, LogEntryType.Line, prevLog, 5, "Text2", DateTimeStamp.UtcNow, LogLevel.Fatal, null, 3712, ActivityMonitor.Tags.CreateDependentActivity, exAgg ); using( var mem = new MemoryStream() ) using( var w = new CKBinaryWriter( mem ) ) { w.Write( LogReader.CurrentStreamVersion ); e1.WriteLogEntry( w ); e2.WriteLogEntry( w ); w.Write( (byte)0 ); w.Flush(); byte[] versionBytes = new byte[4]; mem.Position = 0; mem.Read( versionBytes, 0, 4 ); Assert.That( BitConverter.ToInt32( versionBytes, 0 ), Is.EqualTo( LogReader.CurrentStreamVersion ) ); using( var reader = new LogReader( mem, LogReader.CurrentStreamVersion, 4 ) ) { Assert.That( reader.MoveNext() ); Assert.That( reader.Current.Text, Is.EqualTo( e1.Text ) ); Assert.That( reader.Current.LogLevel, Is.EqualTo( e1.LogLevel ) ); Assert.That( reader.Current.LogTime, Is.EqualTo( e1.LogTime ) ); Assert.That( reader.Current.FileName, Is.EqualTo( e1.FileName ) ); Assert.That( reader.Current.LineNumber, Is.EqualTo( e1.LineNumber ) ); Assert.That( reader.Current.Exception.ExceptionTypeAssemblyQualifiedName, Is.EqualTo( e1.Exception.ExceptionTypeAssemblyQualifiedName ) ); Assert.That( reader.Current.Exception.ToString(), Is.EqualTo( e1.Exception.ToString() ) ); Assert.That( reader.MoveNext() ); Assert.That( reader.CurrentMulticast.PreviousEntryType, Is.EqualTo( LogEntryType.Line ) ); Assert.That( reader.CurrentMulticast.PreviousLogTime, Is.EqualTo( prevLog ) ); Assert.That( reader.Current.Text, Is.EqualTo( e2.Text ) ); Assert.That( reader.Current.LogTime, Is.EqualTo( e2.LogTime ) ); Assert.That( reader.Current.FileName, Is.Null ); Assert.That( reader.Current.LineNumber, Is.EqualTo( 0 ), "Since no file name is set, line number is 0." ); Assert.That( reader.Current.Exception.ExceptionTypeAssemblyQualifiedName, Is.EqualTo( e2.Exception.ExceptionTypeAssemblyQualifiedName ) ); Assert.That( reader.Current.Exception.ToString(), Is.EqualTo( e2.Exception.ToString() ) ); Assert.That( reader.MoveNext(), Is.False ); Assert.That( reader.BadEndOfFileMarker, Is.False ); } } }
public void LogEntryReadWrite() { var exInner = new CKExceptionData("message", "typeof(exception)", "assemblyQualifiedName", "stackTrace", null, "fileName", "fusionLog", null, null); var ex2 = new CKExceptionData("message2", "typeof(exception2)", "assemblyQualifiedName2", "stackTrace2", exInner, "fileName2", "fusionLog2", null, null); var exL = new CKExceptionData("loader-message", "typeof(loader-exception)", "loader-assemblyQualifiedName", "loader-stackTrace", null, "loader-fileName", "loader-fusionLog", null, null); var exAgg = new CKExceptionData("agg-message", "typeof(agg-exception)", "agg-assemblyQualifiedName", "agg-stackTrace", ex2, "fileName", "fusionLog", null, new[] { ex2, exL }); var prevLog = DateTimeStamp.UtcNow; ILogEntry e1 = LogEntry.CreateLog("Text1", new DateTimeStamp(DateTime.UtcNow, 42), LogLevel.Info, "c:\\test.cs", 3712, ActivityMonitor.Tags.CreateDependentActivity, exAgg); ILogEntry e2 = LogEntry.CreateMulticastLog(Guid.Empty, LogEntryType.Line, prevLog, 5, "Text2", DateTimeStamp.UtcNow, LogLevel.Fatal, null, 3712, ActivityMonitor.Tags.CreateDependentActivity, exAgg); using (var mem = new MemoryStream()) using (var w = new CKBinaryWriter(mem)) { w.Write(LogReader.CurrentStreamVersion); e1.WriteLogEntry(w); e2.WriteLogEntry(w); w.Write((byte)0); w.Flush(); byte[] versionBytes = new byte[4]; mem.Position = 0; mem.Read(versionBytes, 0, 4); Assert.That(BitConverter.ToInt32(versionBytes, 0), Is.EqualTo(LogReader.CurrentStreamVersion)); using (var reader = new LogReader(mem, LogReader.CurrentStreamVersion, 4)) { Assert.That(reader.MoveNext()); Assert.That(reader.Current.Text, Is.EqualTo(e1.Text)); Assert.That(reader.Current.LogLevel, Is.EqualTo(e1.LogLevel)); Assert.That(reader.Current.LogTime, Is.EqualTo(e1.LogTime)); Assert.That(reader.Current.FileName, Is.EqualTo(e1.FileName)); Assert.That(reader.Current.LineNumber, Is.EqualTo(e1.LineNumber)); Assert.That(reader.Current.Exception.ExceptionTypeAssemblyQualifiedName, Is.EqualTo(e1.Exception.ExceptionTypeAssemblyQualifiedName)); Assert.That(reader.Current.Exception.ToString(), Is.EqualTo(e1.Exception.ToString())); Assert.That(reader.MoveNext()); Assert.That(reader.CurrentMulticast.PreviousEntryType, Is.EqualTo(LogEntryType.Line)); Assert.That(reader.CurrentMulticast.PreviousLogTime, Is.EqualTo(prevLog)); Assert.That(reader.Current.Text, Is.EqualTo(e2.Text)); Assert.That(reader.Current.LogTime, Is.EqualTo(e2.LogTime)); Assert.That(reader.Current.FileName, Is.Null); Assert.That(reader.Current.LineNumber, Is.EqualTo(0), "Since no file name is set, line number is 0."); Assert.That(reader.Current.Exception.ExceptionTypeAssemblyQualifiedName, Is.EqualTo(e2.Exception.ExceptionTypeAssemblyQualifiedName)); Assert.That(reader.Current.Exception.ToString(), Is.EqualTo(e2.Exception.ToString())); Assert.That(reader.MoveNext(), Is.False); Assert.That(reader.BadEndOfFileMarker, Is.False); } } }
public IndexCkmon(LuceneConfiguration configuration, string pathCkmon) { using (var indexer = new LuceneIndexer(configuration)) using (LogReader reader = LogReader.Open(pathCkmon)) { reader.MoveNext(); for ( ; ;) { indexer.IndexLog(reader.CurrentMulticast, configuration.Directory); if (!reader.MoveNext()) { return; } } } }
private static void CopyTo(MulticastLogEntryTextBuilder b, string filePath) { using (LogReader r = LogReader.Open(filePath, 0L, null)) { var o = Console.Out; { int i = 0; while (r.MoveNext()) { b.AppendEntry(r.CurrentMulticast); if (i++ == 20) { o.Write(b.Builder.ToString()); b.Builder.Clear(); i = 0; } } o.Write(b.Builder.ToString()); } } }