Добавить заголовок в Serilog общих переходящих файлов

#c# #.net #serilog #serilog-sinks-file #serilog.extensions.logging.file

Вопрос:

Я хочу использовать Serilog для записи журналов, созданных различными приложениями (.NET framework), в общий файл с заголовками. Требуется, чтобы файл был разделен после достижения определенного предела байтов

https://github.com/serilog/serilog-sinks-file объясняет, как можно выполнять запись в общий файл из нескольких приложений, используя shared: true в WriteTo.File() методе конфигурацию регистратора

https://github.com/cocowalla/serilog-sinks-file-header объясняет, как добавлять заголовки, используя hooks в WriteTo.File() методе, в конфигурации регистратора Оба этих отдельных файла поддерживают разделение (переходящие файлы) с помощью fileSizeLimitBytes

Я настроил регистратор как:

 Log.Logger = new LoggerConfiguration()
                    .Enrich.FromLogContext()
                    .WriteTo.File(path, rollOnFileSizeLimit: true, fileSizeLimitBytes:5000, 
                                  retainedFileCountLimit: null, shared: true, 
                                  outputTemplate:"{Level} {Timestamp:yyyy-MM-dd HH:mm:ss.fff} {Message} {MachineName}{NewLine}",
                                  hooks: new HeaderWriter("Level Timestamp Message MachineName"))
                    .CreateLogger(); 
 

Но я получил сообщение об ошибке Unhandled Exception: System.ArgumentException: File lifecycle hooks are not currently supported for shared log files

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

Комментарии:

1. Вы не задали вопрос. Я предполагаю, что это будет «как мне поделиться файлом журнала и записать заголовки». Подсказка — вы получите гораздо лучшие ответы, если попытаетесь вставить фрагменты своего кода и описать, какая у вас проблема. StackExchange может быть довольно жестким, если люди не попытаются первыми и не поделятся тем, что они попробовали.

2. Пожалуйста, предоставьте достаточно кода, чтобы другие могли лучше понять или воспроизвести проблему.