Пример #1
0
 public void Append(IObjectWriter writer, SemanticLogLevel logLevel)
 {
     writer.WriteObject("app", w => w
                        .WriteProperty("name", applicationName)
                        .WriteProperty("version", applicationVersion)
                        .WriteProperty("sessionId", applicationSessionId));
 }
Пример #2
0
 public void Append(IObjectWriter writer, SemanticLogLevel logLevel, Exception?exception)
 {
     if (exception != null && exception is not DomainException)
     {
         logger.Log(exception, httpContextWrapper);
     }
 }
Пример #3
0
        public void Append(IObjectWriter writer, SemanticLogLevel logLevel, Exception?exception)
        {
            var httpContext = httpContextAccessor.HttpContext;

            if (string.IsNullOrEmpty(httpContext?.Request?.Method))
            {
                return;
            }

            var requestId = GetRequestId(httpContext);

            var logContext = (requestId, context : httpContext, actionContextAccessor);

            writer.WriteObject("web", logContext, (ctx, w) =>
            {
                w.WriteProperty("requestId", ctx.requestId);
                w.WriteProperty("requestPath", ctx.context.Request.Path);
                w.WriteProperty("requestMethod", ctx.context.Request.Method);

                var actionContext = ctx.actionContextAccessor.ActionContext;

                if (actionContext != null)
                {
                    w.WriteObject("routeValues", actionContext.ActionDescriptor.RouteValues, (routeValues, r) =>
                    {
                        foreach (var(key, value) in routeValues)
                        {
                            r.WriteProperty(key, value);
                        }
                    });
Пример #4
0
        private void LogFormattedText(SemanticLogLevel logLevel, string formattedText)
        {
            List <Exception>?exceptions = null;

            for (var i = 0; i < channels.Length; i++)
            {
                try
                {
                    channels[i].Log(logLevel, formattedText);
                }
                catch (Exception ex)
                {
                    if (exceptions == null)
                    {
                        exceptions = new List <Exception>();
                    }

                    exceptions.Add(ex);
                }
            }

            if (exceptions != null && exceptions.Count > 0)
            {
                throw new AggregateException("An error occurred while writing to logger(s).", exceptions);
            }
        }
Пример #5
0
            public TimeMeasurer(ISemanticLog log, SemanticLogLevel logLevel, Action <IObjectWriter> objectWriter)
            {
                this.logLevel = logLevel;
                this.log      = log;

                this.objectWriter = objectWriter;
            }
        private static string GetSeverity(SemanticLogLevel logLevel)
        {
            switch (logLevel)
            {
            case SemanticLogLevel.Trace:
                return("DEBUG");

            case SemanticLogLevel.Debug:
                return("DEBUG");

            case SemanticLogLevel.Information:
                return("INFO");

            case SemanticLogLevel.Warning:
                return("WARNING");

            case SemanticLogLevel.Error:
                return("ERROR");

            case SemanticLogLevel.Fatal:
                return("CRITICAL");

            default:
                return("DEFAULT");
            }
        }
Пример #7
0
        private string FormatText(SemanticLogLevel logLevel, Exception?exception, LogFormatter action)
        {
            var writer = writerFactory.Create();

            try
            {
                writer.Start();
                writer.WriteProperty(nameof(logLevel), logLevel.ToString());

                action(writer);

                for (var i = 0; i < appenders.Length; i++)
                {
                    appenders[i].Append(writer, logLevel, exception);
                }

                writer.WriteException(exception);

                return(writer.End());
            }
            finally
            {
                writerFactory.Release(writer);
            }
        }
Пример #8
0
        public void Log(SemanticLogLevel logLevel, Action <IObjectWriter> action)
        {
            Guard.NotNull(action, nameof(action));

            var formattedText = FormatText(logLevel, action);

            List <Exception> exceptions = null;

            foreach (var channel in channels)
            {
                try
                {
                    channel.Log(logLevel, formattedText);
                }
                catch (Exception ex)
                {
                    if (exceptions == null)
                    {
                        exceptions = new List <Exception>();
                    }

                    exceptions.Add(ex);
                }
            }

            if (exceptions != null && exceptions.Count > 0)
            {
                throw new AggregateException("An error occurred while writing to logger(s).", exceptions);
            }
        }
Пример #9
0
        public void Log <T>(SemanticLogLevel logLevel, T context, Action <T, IObjectWriter> action)
        {
            Guard.NotNull(action, nameof(action));

            var formattedText = FormatText(logLevel, context, action);

            LogFormattedText(logLevel, formattedText);
        }
Пример #10
0
        public void Log <T>(SemanticLogLevel logLevel, T context, Action <T, IObjectWriter> action)
        {
            Guard.NotNull(action);

            if (logLevel < options.Value.Level)
            {
                return;
            }

            var formattedText = FormatText(logLevel, context, action);

            LogFormattedText(logLevel, formattedText);
        }
Пример #11
0
        public void Log <T>(SemanticLogLevel logLevel, T context, Exception?exception, LogFormatter <T> action)
        {
            Guard.NotNull(action);

            if (logLevel < options.Value.Level)
            {
                return;
            }

            var formattedText = FormatText(logLevel, context, exception, action);

            LogFormattedText(logLevel, formattedText);
        }
Пример #12
0
        public void Log(SemanticLogLevel logLevel, Exception?exception, LogFormatter action)
        {
            Guard.NotNull(action, nameof(action));

            if (logLevel < options.Value.Level)
            {
                return;
            }

            var formattedText = FormatText(logLevel, exception, action);

            LogFormattedText(logLevel, formattedText);
        }
Пример #13
0
 public void WriteLine(SemanticLogLevel level, string message)
 {
     if (level >= SemanticLogLevel.Error)
     {
         Console.ForegroundColor = ConsoleColor.Red;
         Console.Error.WriteLine(message);
         Console.ResetColor();
     }
     else
     {
         Console.Out.WriteLine(message);
     }
 }
Пример #14
0
 public void Append(IObjectWriter writer, SemanticLogLevel logLevel, Exception exception)
 {
     try
     {
         if (exception != null && exception is not DomainException && exception is not OperationCanceledException)
         {
             logger.Log(exception, httpContextWrapper);
         }
     }
     catch
     {
         return;
     }
 }
Пример #15
0
        private string FormatText(SemanticLogLevel logLevel, Action <IObjectWriter> objectWriter)
        {
            var writer = writerFactory();

            writer.WriteProperty(nameof(logLevel), logLevel.ToString());

            objectWriter(writer);

            foreach (var appender in appenders)
            {
                appender.Append(writer);
            }

            return(writer.ToString());
        }
Пример #16
0
        private static IDisposable Measure <T>(this ISemanticLog log, SemanticLogLevel logLevel, T context, Action <T, IObjectWriter> objectWriter)
        {
            var watch = ValueStopwatch.StartNew();

            return(new DelegateDisposable(() =>
            {
                var elapsedMs = watch.Stop();

                log.Log(logLevel, (Context: context, elapsedMs), (ctx, w) =>
                {
                    objectWriter?.Invoke(ctx.Context, w);

                    w.WriteProperty("elapsedMs", elapsedMs);
                });
            }));
        }
Пример #17
0
        private static IDisposable Measure(this ISemanticLog log, SemanticLogLevel logLevel, Action <IObjectWriter> objectWriter)
        {
            var watch = ValueStopwatch.StartNew();

            return(new DelegateDisposable(() =>
            {
                var elapsedMs = watch.Stop();

                log.Log(logLevel, writer =>
                {
                    objectWriter?.Invoke(writer);

                    writer.WriteProperty("elapsedMs", elapsedMs);
                });
            }));
        }
Пример #18
0
        public void Log(SemanticLogLevel logLevel, string message)
        {
            var color = 0;

            if (logLevel == SemanticLogLevel.Warning)
            {
                color = 0xffff00;
            }
            else if (logLevel >= SemanticLogLevel.Error)
            {
                color = 0xff0000;
            }

            processor.EnqueueMessage(new LogMessageEntry {
                Message = message, Color = color
            });
        }
Пример #19
0
        public void WriteLine(SemanticLogLevel level, string message)
        {
            if (level >= SemanticLogLevel.Error)
            {
                outputBuilder.Append("\x1B[1m\x1B[31m");
                outputBuilder.Append(message);
                outputBuilder.Append("\x1B[39m\x1B[22m");
                outputBuilder.AppendLine();

                Console.Error.Write(outputBuilder.ToString());
            }
            else
            {
                Console.Out.Write(outputBuilder.ToString());
            }

            outputBuilder.Clear();
        }
Пример #20
0
        public void Log(SemanticLogLevel logLevel, string message)
        {
            if (!isInitialized)
            {
                lock (lockObject)
                {
                    if (!isInitialized)
                    {
                        processor.Initialize();

                        isInitialized = true;
                    }
                }
            }

            processor.EnqueueMessage(new LogMessageEntry {
                Message = message
            });
        }
Пример #21
0
        public void Append(IObjectWriter writer, SemanticLogLevel logLevel)
        {
            var httpContext = httpContextAccessor.HttpContext;

            if (string.IsNullOrEmpty(httpContext?.Request?.Method))
            {
                return;
            }

            Guid requestId;

            if (httpContext.Items.TryGetValue(nameof(requestId), out var requestIdvalue) && requestIdvalue is Guid requestIdValue)
            {
                requestId = requestIdValue;
            }
            else
            {
                httpContext.Items[nameof(requestId)] = requestId = Guid.NewGuid();
            }

            var logContext = (requestId, context : httpContext, actionContextAccessor);

            writer.WriteObject("web", logContext, (ctx, w) =>
            {
                w.WriteProperty("requestId", ctx.requestId.ToString());
                w.WriteProperty("requestPath", ctx.context.Request.Path);
                w.WriteProperty("requestMethod", ctx.context.Request.Method);

                var actionContext = ctx.actionContextAccessor.ActionContext;

                if (actionContext != null)
                {
                    w.WriteObject("routeValues", actionContext.ActionDescriptor.RouteValues, (routeValues, r) =>
                    {
                        foreach (var kvp in routeValues)
                        {
                            r.WriteProperty(kvp.Key, kvp.Value);
                        }
                    });
                }
            });
        }
Пример #22
0
        private string FormatText <T>(SemanticLogLevel logLevel, T context, Action <T, IObjectWriter> objectWriter)
        {
            var writer = writerFactory.Create();

            try
            {
                writer.WriteProperty(nameof(logLevel), logLevel.ToString());

                objectWriter(context, writer);

                for (var i = 0; i < appenders.Length; i++)
                {
                    appenders[i].Append(writer, logLevel);
                }

                return(writer.ToString());
            }
            finally
            {
                writerFactory.Release(writer);
            }
        }
Пример #23
0
 public void Log(SemanticLogLevel logLevel, string message)
 {
     processor.EnqueueMessage(new LogMessageEntry {
         Message = message, Level = logLevel
     });
 }
 public void Log(SemanticLogLevel logLevel, Action <IObjectWriter> action)
 {
     LogCount++;
 }
Пример #25
0
 public void Append(IObjectWriter writer, SemanticLogLevel logLevel, Exception?exception)
 {
     writer.WriteProperty(nameof(category), category);
 }
        public void Append(IObjectWriter writer, SemanticLogLevel logLevel, Exception?exception)
        {
            var severity = GetSeverity(logLevel);

            writer.WriteProperty(nameof(severity), severity);
        }
Пример #27
0
 public void Log <T>(SemanticLogLevel logLevel, T context, Action <T, IObjectWriter> action)
 {
     LogLevels[logLevel] = LogLevels.GetOrDefault(logLevel) + 1;
 }
Пример #28
0
 public void Append(IObjectWriter writer, SemanticLogLevel logLevel)
 {
     writer.WriteProperty("timestamp", clock.GetCurrentInstant());
 }
Пример #29
0
 public void Append(IObjectWriter writer, SemanticLogLevel logLevel, Exception?exception)
 {
     objectWriter(writer);
 }
Пример #30
0
 public void Log(SemanticLogLevel logLevel, Action <IObjectWriter> action)
 {
     LogCount++;
     LogLevels[logLevel] = LogLevels.GetOrDefault(logLevel) + 1;
 }