C# — Serilog — обогатители оставляют пустые записиC#

Место общения программистов C#
Ответить
Anonymous
 C# — Serilog — обогатители оставляют пустые записи

Сообщение Anonymous »

Разобрались с основами Serilog. Теперь пытаюсь добавить несколько обогатителей, чтобы я мог печатать имя пользователя, имя компьютера, имя класса и т. д. в каждой строке журнала.

Это код, который у меня есть на данный момент,

Код: Выделить всё

using System;
using Serilog;
using Serilog.Sinks.SystemConsole;
using Serilog.Sinks.File;
using Serilog.Enrichers;
using Serilog.Core;
using Serilog.Events;
using System.Threading;
using Serilog.Context;

var outputTemplate = "{MachineName} | {UserName} | {Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level:u4}] | {ClassName} | {Message:l}{NewLine}{Exception}";
var Logger = new LoggerConfiguration()
.MinimumLevel.Debug()
.WriteTo.Console(outputTemplate: outputTemplate)
.WriteTo.File("logFile-.log",
outputTemplate: outputTemplate)
.Enrich.FromLogContext()
.Enrich.WithEnvironmentUserName()
.Enrich.WithProperty("Version", "1.0.0")
.CreateLogger();

Logger.Information("Hello, Serilog!");

var position = new { Latitude = 25, Longitude = 134 };
var elapsedMs = 35;

for (int i = 0; i < 5; i++)
{
Logger.Information("Processed {@position} in {elapsed} ms.", position, elapsedMs);
Logger.Information("");
}

using (LogContext.PushProperty("SourceContext", "TestClass"))
{
for (int i = 0; i < 5; i++)
{
Logger.Information("Processed {@position} in {elapsed} ms.", position, elapsedMs);
Logger.Information("");
}
}
Вывод

Код: Выделить всё

 |  | 2018-03-03 19:02:56.247 -05:00 [INFO] |  | Hello, Serilog!
|  | 2018-03-03 19:02:56.287 -05:00 [INFO] |  | Processed {Latitude=25, Longitude=134} in 35 ms.
|  | 2018-03-03 19:02:56.295 -05:00 [INFO] |  |
|  | 2018-03-03 19:02:56.295 -05:00 [INFO] |  | Processed {Latitude=25, Longitude=134} in 35 ms.
|  | 2018-03-03 19:02:56.296 -05:00 [INFO] |  |
|  | 2018-03-03 19:02:56.297 -05:00 [INFO] |  | Processed {Latitude=25, Longitude=134} in 35 ms.
|  | 2018-03-03 19:02:56.298 -05:00 [INFO] |  |
|  | 2018-03-03 19:02:56.298 -05:00 [INFO] |  | Processed {Latitude=25, Longitude=134} in 35 ms.
|  | 2018-03-03 19:02:56.299 -05:00 [INFO] |  |
|  | 2018-03-03 19:02:56.300 -05:00 [INFO] |  | Processed {Latitude=25, Longitude=134} in 35 ms.
|  | 2018-03-03 19:02:56.301 -05:00 [INFO] |  |
|  | 2018-03-03 19:02:56.302 -05:00 [INFO] | TestClass | Processed {Latitude=25, Longitude=134} in 35 ms.
|  | 2018-03-03 19:02:56.307 -05:00 [INFO] | TestClass |
|  | 2018-03-03 19:02:56.308 -05:00 [INFO] | TestClass | Processed {Latitude=25, Longitude=134} in 35 ms.
|  | 2018-03-03 19:02:56.310 -05:00 [INFO] | TestClass |
|  | 2018-03-03 19:02:56.310 -05:00 [INFO] | TestClass | Processed {Latitude=25, Longitude=134} in 35 ms.
|  | 2018-03-03 19:02:56.311 -05:00 [INFO] | TestClass |
|  | 2018-03-03 19:02:56.312 -05:00 [INFO] | TestClass | Processed {Latitude=25, Longitude=134} in 35 ms.
|  | 2018-03-03 19:02:56.313 -05:00 [INFO] | TestClass |
|  | 2018-03-03 19:02:56.316 -05:00 [INFO] | TestClass | Processed {Latitude=25, Longitude=134} in 35 ms.
|  | 2018-03-03 19:02:56.317 -05:00 [INFO] | TestClass |
Press any key to continue . . .
Насколько я понимаю, мне приходится вручную определять «заполнители» (

Код: Выделить всё

MachineName
или UserName или ClassName) в outputTemplate при создании объекта Logger. Я не уверен, как сделать эти заполнители необязательными (т. е. без печати пустого места в строке журнала), если мне не нужно их использовать. (Я бы не хотел печатать имя класса в нескольких строках для примера). Или, может быть, я не совсем понимаю концепцию обогатителей.

Любая помощь приветствуется!!!

Подробнее здесь: https://stackoverflow.com/questions/490 ... nk-entries
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»