Я начал использовать Serilog и написал тест Dot Net Консольное приложение Core 3.1 .
В моем простом проекте я выполняю цикл и веду журнал. Журналы Serilog на Console и File .
Но я обнаружил, что журналы пропадают после 10 000 записей журнала. До 10 000 записей журнала все журналы представляют собой последовательности как в консоли, так и в файле, но после 10 000 записей журналы начинают пропускаться как на Console , так и File . Например, 29483 после 10000.
Также вызовите функцию Log.CloseAndFlu sh () для flu sh все журналы не работают, так как в конце я не вижу записи «ЗАВЕРШЕНО» of Console и File .
2020-05-26 12:12:38.575 | [INFO] | Thread-1 | hello:1
........ Logs are in sequencial order ........
2020-05-26 12:12:38.575 | [INFO] | Thread-1 | hello:9993
2020-05-26 12:12:38.575 | [INFO] | Thread-1 | hello:9994
2020-05-26 12:12:38.575 | [INFO] | Thread-1 | hello:9995
2020-05-26 12:12:38.575 | [INFO] | Thread-1 | hello:9996
2020-05-26 12:12:38.575 | [INFO] | Thread-1 | hello:9997
2020-05-26 12:12:38.575 | [INFO] | Thread-1 | hello:9998
2020-05-26 12:12:38.575 | [INFO] | Thread-1 | hello:9999
2020-05-26 12:12:38.575 | [INFO] | Thread-1 | hello:10000
2020-05-26 12:12:38.637 | [INFO] | Thread-1 | hello:29483
2020-05-26 12:12:38.689 | [INFO] | Thread-1 | hello:62627
2020-05-26 12:12:38.693 | [INFO] | Thread-1 | hello:64740
2020-05-26 12:12:38.694 | [INFO] | Thread-1 | hello:65624
2020-05-26 12:12:38.695 | [INFO] | Thread-1 | hello:66169
2020-05-26 12:12:38.697 | [INFO] | Thread-1 | hello:66662
2020-05-26 12:12:38.697 | [INFO] | Thread-1 | hello:67040
2020-05-26 12:12:38.698 | [INFO] | Thread-1 | hello:67432
2020-05-26 12:12:38.698 | [INFO] | Thread-1 | hello:67828
2020-05-26 12:12:38.699 | [INFO] | Thread-1 | hello:68083
2020-05-26 12:12:38.700 | [INFO] | Thread-1 | hello:68386
2020-05-26 12:12:38.700 | [INFO] | Thread-1 | hello:68756
2020-05-26 12:12:38.701 | [INFO] | Thread-1 | hello:69387
2020-05-26 12:12:38.702 | [INFO] | Thread-1 | hello:69904
2020-05-26 12:12:38.703 | [INFO] | Thread-1 | hello:70296
2020-05-26 12:12:38.703 | [INFO] | Thread-1 | hello:70681
2020-05-26 12:12:38.704 | [INFO] | Thread-1 | hello:71093
2020-05-26 12:12:38.706 | [INFO] | Thread-1 | hello:72488
2020-05-26 12:12:38.706 | [INFO] | Thread-1 | hello:72945
2020-05-26 12:12:38.707 | [INFO] | Thread-1 | hello:73590
2020-05-26 12:12:38.708 | [INFO] | Thread-1 | hello:73975
2020-05-26 12:12:38.708 | [INFO] | Thread-1 | hello:74383
2020-05-26 12:12:38.709 | [INFO] | Thread-1 | hello:74783
2020-05-26 12:12:38.709 | [INFO] | Thread-1 | hello:75183
2020-05-26 12:12:38.711 | [INFO] | Thread-1 | hello:75644
2020-05-26 12:12:38.712 | [INFO] | Thread-1 | hello:76087
2020-05-26 12:12:38.713 | [INFO] | Thread-1 | hello:76719
Я рассматривал проблемы, с которыми столкнулись другие разработчики при отсутствии журналов, но ни одна из них не связана с моей проблемой.
Program.cs
using Microsoft.Extensions.Configuration;
using Serilog;
using Serilog.Core;
using System;
namespace MyApp
{
public class Program
{
static void Main(string[] args)
{
var l_config = new ConfigurationBuilder().AddJsonFile("appsettings.json").Build();
Logger l_log = new LoggerConfiguration().ReadFrom.Configuration(l_config).CreateLogger();
Log.Logger = l_log;
for (long l_index = 0; l_index < 100000L; l_index++)
{
Log.Information("hello:" + l_index);
}
Log.Information("FINISHED");
Log.CloseAndFlush();
Console.ReadKey();
}
~Program()
{
Log.CloseAndFlush();
}
}
}
настройки приложения. json
{
"Serilog": {
"Using": ["Serilog.Sinks.Console"],
"MinimumLevel": "Debug",
"WriteTo": [{
"Name": "Async",
"Args": {
"configure": [{
"Name": "Console",
"Args": {
"MinimumLevel": "Verbose",
"outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss.fff} | [{Level:u4}] | Thread-{ThreadId} | {Message:lj}{NewLine}{Exception}"
}
}, {
"Name": "File",
"Args": {
"MinimumLevel": "Verbose",
"path": "Logs\\log..txt",
"outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss.fff} | [{Level:u4}] | Thread-{ThreadId} | {Message:lj}{NewLine}{Exception}",
"rollingInterval": "Hour",
}
}
]
}
}
],
"Enrich": ["FromLogContext", "WithThreadId"],
"Destructure": [{
"Name": "ToMaximumDepth",
"Args": {
"maximumDestructuringDepth": 4
}
}, {
"Name": "ToMaximumStringLength",
"Args": {
"maximumStringLength": 100
}
}, {
"Name": "ToMaximumCollectionCount",
"Args": {
"maximumCollectionCount": 10
}
}
],
"Properties": {
"Application": "MyApp"
}
}
}
Использование пакетов Nuget:
- Serilog.dll
- Serilog.Enrichers.Environment.dll
- Serilog.Enrichers.Thread.dll
- Serilog.Settings.Configuration.dll
- Serilog.Sinks.Asyn c .dll
- Serilog.Sinks.Console.dll
Прошу прощения за размещение здесь большого количества информации, но это необходимо, чтобы мы могли точно указать проблема.