Если я настраиваю базовую службу Worker приложение и зарегистрируйте Serilog:
Код: Выделить всё
builder.Services.AddSerilog(loggerConfig =>
{
loggerConfig
.WriteTo.File(new RenderedCompactJsonFormatter(), "output.json");
});
Код: Выделить всё
using System.Text.Json;
namespace LoggingTests;
public class Worker : BackgroundService
{
private readonly ILogger _logger;
private readonly IHostApplicationLifetime _hostApplicationLifetime;
public Worker(ILogger logger, IHostApplicationLifetime hostApplicationLifetime)
{
_logger = logger;
_hostApplicationLifetime = hostApplicationLifetime;
}
protected override Task ExecuteAsync(CancellationToken stoppingToken)
{
var message = new ExampleMessage(
ExampleText: "Test Message",
ExampleNumber: 120,
ExamplePerson: new Person("John", "Smith"),
OtherPeople: [new Person("Another", "Person"), new Person("YetAnother", "Person")]
);
_logger.LogWarning("Example Structured Payload: {@Message}", message);
_logger.LogWarning("Example Structured Payload: {@Message}", JsonSerializer.Serialize(message));
_hostApplicationLifetime.StopApplication();
return Task.CompletedTask;
}
record ExampleMessage(string ExampleText, int ExampleNumber, Person ExamplePerson, IEnumerable OtherPeople);
record Person(string FirstName, string LastName);
}
Код: Выделить всё
{
"@t": "2024-04-24T01:28:25.4060384Z",
"@m": "Example Structured Payload: ExampleMessage { ExampleText: \"Test Message\", ExampleNumber: 120, ExamplePerson: Person { FirstName: \"John\", LastName: \"Smith\" }, OtherPeople: [Person { FirstName: \"Another\", LastName: \"Person\" }, Person { FirstName: \"YetAnother\", LastName: \"Person\" }] }",
"@i": "1227d6a4",
"@l": "Warning",
"Message": {
"ExampleText": "Test Message",
"ExampleNumber": 120,
"ExamplePerson": {
"FirstName": "John",
"LastName": "Smith",
"$type": "Person"
},
"OtherPeople": [
{
"FirstName": "Another",
"LastName": "Person",
"$type": "Person"
},
{
"FirstName": "YetAnother",
"LastName": "Person",
"$type": "Person"
}
],
"$type": "ExampleMessage"
},
"SourceContext": "LoggingTests.Worker"
}
Код: Выделить всё
{
"@t": "2024-04-24T01:28:25.4326606Z",
"@m": "Example Structured Payload: \"{\\\"ExampleText\\\":\\\"Test Message\\\",\\\"ExampleNumber\\\":120,\\\"ExamplePerson\\\":{\\\"FirstName\\\":\\\"John\\\",\\\"LastName\\\":\\\"Smith\\\"},\\\"OtherPeople\\\":[{\\\"FirstName\\\":\\\"Another\\\",\\\"LastName\\\":\\\"Person\\\"},{\\\"FirstName\\\":\\\"YetAnother\\\",\\\"LastName\\\":\\\"Person\\\"}]}\"",
"@i": "1227d6a4",
"@l": "Warning",
"Message": "{\"ExampleText\":\"Test Message\",\"ExampleNumber\":120,\"ExamplePerson\":{\"FirstName\":\"John\",\"LastName\":\"Smith\"},\"OtherPeople\":[{\"FirstName\":\"Another\",\"LastName\":\"Person\"},{\"FirstName\":\"YetAnother\",\"LastName\":\"Person\"}]}",
"SourceContext": "LoggingTests.Worker"
}
Код: Выделить всё
{
"@t": "2024-04-24T01:28:25.4326606Z",
"@m": "Example Structured Payload: \"{\\\"ExampleText\\\":\\\"Test Message\\\",\\\"ExampleNumber\\\":120,\\\"ExamplePerson\\\":{\\\"FirstName\\\":\\\"John\\\",\\\"LastName\\\":\\\"Smith\\\"},\\\"OtherPeople\\\":[{\\\"FirstName\\\":\\\"Another\\\",\\\"LastName\\\":\\\"Person\\\"},{\\\"FirstName\\\":\\\"YetAnother\\\",\\\"LastName\\\":\\\"Person\\\"}]}\"",
"@i": "1227d6a4",
"@l": "Warning",
"Message": {
"ExampleText": "Test Message",
"ExampleNumber": 120,
"ExamplePerson": {
"FirstName": "John",
"LastName": "Smith",
"$type": "Person"
},
"OtherPeople": [
{
"FirstName": "Another",
"LastName": "Person",
"$type": "Person"
},
{
"FirstName": "YetAnother",
"LastName": "Person",
"$type": "Person"
}
],
"$type": "ExampleMessage"
},
"SourceContext": "LoggingTests.Worker"
}
>
Подробнее здесь: https://stackoverflow.com/questions/783 ... act-render