Graylog приемник для serilolg добавляет данные http контекста - PullRequest
0 голосов
/ 12 марта 2019

Я пытаюсь добавить логирование в .net core web api с использованием Graylog. Желаемый вывод должен быть таким же, как на консоли с использованием formmater, как этот:

"[{Метка времени: ЧЧ: мм: сс} {Уровень: u3}] {EventId} {Сообщение: lj} {Свойства} {NewLine} {Исключение} {NewLine}")

, который производит этот вывод:

[18:10:03 INF] { Id: 2 } Request finished in 876.4304ms 200 
text/plain; charset=utf-8 {ElapsedMilliseconds=876.4304, 
StatusCode=200, ContentType="text/plain; charset=utf-8", 
SourceContext="Microsoft.AspNetCore.Hosting.Internal.WebHost", 
RequestId="0HLL72NNJ19OK:00000001", RequestPath="/geo/allmenu", 
CorrelationId=null, ConnectionId="0HLL72NNJ19OK"}

Моя конфигурация приемника для серого журнала:

  var graylogConfig = new GraylogSinkConfiguration
        {

            Host = "10.1.1.100",
            Port = 12201,
            UseSecureConnection = false,
            UseAsyncLogging = true,
            GraylogTransportType = GraylogTransportType.Tcp,
            RetryCount = 20,
            PropertyPrefix = "webapi",                

        };

К сожалению, я не вижу никаких обогащенных данных в графе Graylog и задаюсь вопросом, как я мог бы предоставить форматтер для этой колонки?

1 Ответ

0 голосов
/ 13 марта 2019

Чтобы решить эту проблему, я решил использовать syslog приемник в своем основном приложении asp.net, которое позволяет мне прикреплять все обогащенные данные журнала.

        // Use custom message template formatters, just so we can distinguish which sink wrote each message
        var tcpTemplateFormatter = new MessageTemplateTextFormatter("[{Timestamp:HH:mm:ss} {Level:u3}] {EventId} {Message:lj} {Properties}{NewLine}{Exception}{NewLine}{Message}", null);


        // Log RFC5424 formatted events to a syslog server 
        var tcpConfig = new SyslogTcpConfig
        {
            Host = "10.1.1.100",
            Port = 12201,
            Formatter = new Rfc5424Formatter(templateFormatter: tcpTemplateFormatter),
            Framer = new MessageFramer(FramingType.OCTET_COUNTING),
            KeepAlive = true
        };
...