// Log a statement public static void log(LogSeverity log_severity, string log_message) { if (running == false) { String formattedMessage = String.Format("!!! {0}|{1}|({2}): {3}", DateTime.Now.ToString("MM-dd HH:mm:ss.ffff"), log_severity.ToString(), Thread.CurrentThread.ManagedThreadId, log_message); if (consoleOutput) { Console.WriteLine(formattedMessage); } return; } LogStatement statement = new LogStatement { threadId = Thread.CurrentThread.ManagedThreadId, severity = log_severity, message = log_message, time = DateTime.Now.ToString("MM-dd HH:mm:ss.ffff") }; lock (statements) { statements.Add(statement); } }
// Storage thread private static void threadLoop() { LogStatement statement = new LogStatement(); bool message_found = false; while (running) { TLC.Report(); message_found = false; lock (statements) { if (statements.Count() > 0) { LogStatement candidate = statements[0]; statement = candidate; statements.Remove(candidate); message_found = true; } } if (message_found) { log_internal(statement.severity, statement.message, statement.threadId, statement.time); } else { // Sleep for 25ms to prevent cpu waste Thread.Sleep(25); } Thread.Yield(); } }
/// <summary> /// Sends a message to the log. /// </summary> /// <remarks> /// This should almost never be called directly, but rather through one of the helper functions. /// </remarks> /// <param name="log_severity">Severity of the log message.</param> /// <param name="log_message">Text to write into the log.</param> public static void log(LogSeverity log_severity, string log_message) { if ((verbosity & (int)log_severity) != (int)log_severity) { return; } if (running == false) { if (consoleOutput) { string formattedMessage = "!!! " + DateTime.Now.ToString("MM-dd HH:mm:ss.ffff") + "|" + log_severity + "|" + Thread.CurrentThread.ManagedThreadId + ": " + log_message; Console.WriteLine(formattedMessage); } return; } LogStatement statement = new LogStatement { threadId = Thread.CurrentThread.ManagedThreadId, severity = log_severity, message = log_message, time = DateTime.Now }; lock (statements) { statements.Add(statement); } }
public void WriteLine(string message) { lock (_logStatementBuffer) { var ls = new LogStatement(true, message); _logStatementBuffer.Add(ls); } _addedToList.Set(); }
public void Log <TState>(LogLevel logLevel, EventId eventId, TState state, Exception exception, Func <TState, Exception, string> formatter) { var statement = new LogStatement() { Level = logLevel, Exception = exception, Message = formatter(state, exception) }; LogStatements.Add(statement); }
private static ExtendedRichDescription GetStatementDescription(LogStatement statement) { return(new ExtendedRichDescription( new RichDescription( "Log ", new Hilite(statement.Text) ), new RichDescription( "as ", new Hilite(statement.Level.ToString()) ) )); }
// Storage thread private static void threadLoop() { LogStatement statement = new LogStatement(); bool message_found = false; long last_flush = Clock.getTimestamp(); while (running) { TLC.Report(); message_found = false; lock (statements) { if (statements.Count() > 0) { statement = statements[0]; statements.RemoveAt(0); message_found = true; } } if (message_found) { log_internal(statement.severity, statement.message, statement.threadId, statement.time.ToString("MM-dd HH:mm:ss.ffff")); } else { // Sleep for 25ms to prevent cpu waste Thread.Sleep(25); } long cur_time = Clock.getTimestamp(); if (cur_time - last_flush > 1) { last_flush = cur_time; lock (logfilename) { if (logFileStream != null) { logFileStream.Flush(); } } } } }
public void LogStatementIsWrittenToAllSinks() { // Arrange var firstSinkMock = new Mock <ISink>(MockBehavior.Strict); var secondSinkMock = new Mock <ISink>(MockBehavior.Strict); var thirdSinkMock = new Mock <ISink>(MockBehavior.Strict); var dispatcher = new AsyncLogStatementDispatcher(new List <ISink> { firstSinkMock.Object, secondSinkMock.Object, thirdSinkMock.Object }); firstSinkMock.Setup(sink => sink.Write(It.IsAny <string>())); secondSinkMock.Setup(sink => sink.Write(It.IsAny <string>())); thirdSinkMock.Setup(sink => sink.Write(It.IsAny <string>())); var logStatement = new LogStatement(DateTimeOffset.UtcNow, LogLevel.Information, "Message"); // Act dispatcher.Dispatch(logStatement); // Assert firstSinkMock.Verify(sink => sink.Write(logStatement.Render()), Times.Once); secondSinkMock.Verify(sink => sink.Write(logStatement.Render()), Times.Once); thirdSinkMock.Verify(sink => sink.Write(logStatement.Render()), Times.Once); }
bool AbortedByFilter(LogStatement logStatement) { return _filters.Any(f => !f(logStatement)); }
bool AbortedByFilter(LogStatement logStatement) { return(filters.Any(f => !f(logStatement))); }