private static string BuildMessage(LogEntryParameters parameters, Exception exception, string formattedMessage) { var sb = new StringBuilder(); if (!string.IsNullOrWhiteSpace(formattedMessage)) { sb.Append(formattedMessage); } if (exception != null) { if (sb.Length > 0) { sb.AppendLine(); } sb.Append(exception.ToAsyncString()); } if (!string.IsNullOrWhiteSpace(parameters.Context)) { if (sb.Length > 0) { sb.AppendLine(); } sb.Append(parameters.Context); } return(sb.ToString()); }
private string GetSender(Microsoft.Extensions.Logging.LogLevel logLevel, LogEntryParameters parameters) { var sb = new StringBuilder(); sb.Append($"{GetLogLevelString(logLevel)} {parameters.AppName} {parameters.AppVersion}"); if (!string.IsNullOrWhiteSpace(parameters.EnvInfo)) { sb.Append($" : {parameters.EnvInfo}"); } if (_componentName.StartsWith(parameters.AppName)) { if (_componentName.Length > parameters.AppName.Length) { sb.Append($" : {_componentName.Substring(parameters.AppName.Length)}"); } } else { sb.Append($" : {_componentName}"); } if (!string.IsNullOrWhiteSpace(parameters.Process)) { sb.Append($" : {parameters.Process}"); } return(sb.ToString()); }
public void ShouldWriteFormattedOutput() { var state = new LogEntryParameters("AppName", "1.01", "Env", "Caller", "Process1", 12, "MyMessage", null, DateTime.Now); _logger.Log(Microsoft.Extensions.Logging.LogLevel.Information, new EventId(0), state, null, (parameters, exception) => parameters.Message); var expected = $": {state.Moment:MM-dd HH:mm:ss.fff} : MyLogger : {state.Process}{Environment.NewLine} {state.Message}{Environment.NewLine}"; Thread.Sleep(100); _console.Received(1).Write("INFO", null, ConsoleColor.Gray); _console.Received(1).Write(expected, null, null); }
void ILog.Log <TState>(Microsoft.Extensions.Logging.LogLevel logLevel, EventId eventId, TState state, Exception exception, Func <TState, Exception, string> formatter) { var sanitizedException = exception is SanitizingException ? exception : exception != null ? new SanitizingException(exception, Sanitize) : null; var sanitizedFormatter = formatter != null ? new Func <LogEntryParameters, Exception, string>((s, e) => Sanitize(formatter(state, exception))) : null; var sanitizedState = new LogEntryParameters( state.AppName, state.AppVersion, state.EnvInfo, Sanitize(state.CallerFilePath), Sanitize(state.Process), state.CallerLineNumber, Sanitize(state.Message), Sanitize(state.Context), state.Moment); _log.Log(logLevel, eventId, sanitizedState, sanitizedException, sanitizedFormatter); }
private void WriteMessage(Microsoft.Extensions.Logging.LogLevel logLevel, LogEntryParameters callerInfo, string logName, string message, Exception exception) { var logBuilder = _logBuilder; _logBuilder = null; if (logBuilder == null) { logBuilder = new StringBuilder(); } var logLevelColors = GetLogLevelConsoleColors(logLevel); var logLevelString = GetLogLevelString(logLevel); logBuilder.Append(LogLevelPadding); logBuilder.AppendFormat(@"{0:MM-dd HH:mm:ss.fff}", callerInfo.Moment); logBuilder.Append(" : "); logBuilder.Append(logName); logBuilder.Append(" : "); logBuilder.AppendLine(callerInfo.Process); // scope information if (_options.IncludeScopes) { GetScopeInformation(logBuilder); } if (!string.IsNullOrEmpty(message)) { // message logBuilder.Append(MessagePadding); var len = logBuilder.Length; logBuilder.AppendLine(message); logBuilder.Replace(Environment.NewLine, NewLineWithMessagePadding, len, message.Length); } var contextString = callerInfo.Context; if (!string.IsNullOrWhiteSpace(contextString)) { var len = logBuilder.Length; logBuilder.Append(MessagePadding); logBuilder.AppendLine(contextString); logBuilder.Replace(Environment.NewLine, NewLineWithMessagePadding, len, contextString.Length + MessagePadding.Length); } // Example: // System.InvalidOperationException // at Namespace.Class.Function() in File:line X if (exception != null) { logBuilder.AppendLine(exception.ToAsyncString()); } if (logBuilder.Length > 0) { var hasLevel = !string.IsNullOrEmpty(logLevelString); // Queue log message _writer.Write(new LogMessageEntry { Message = logBuilder.ToString(), MessageColor = _defaultConsoleColor, LevelString = hasLevel ? logLevelString : null, LevelBackground = hasLevel ? logLevelColors.Background : null, LevelForeground = hasLevel ? logLevelColors.Foreground : null }); } logBuilder.Clear(); if (logBuilder.Capacity > 1024) { logBuilder.Capacity = 1024; } _logBuilder = logBuilder; }
private static LogEntryParameters GetState() { var state = new LogEntryParameters("AppName", "1.01", "Env", "Caller", "Process1", 12, "MyMessage", new { Prop1 = new { Prop11 = "11", Prop12 = "12" }, Prop2 = "OtherValue" }, DateTime.Now); return(state); }