Beispiel #1
0
        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());
        }
Beispiel #2
0
        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());
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        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;
        }
Beispiel #6
0
        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);
        }