Журнал 4net для нескольких процессов - PullRequest
0 голосов
/ 16 января 2020

Я работаю в архитектуре с несколькими приложениями, и одно из приложений отвечает за запись журналов для других приложений. Я хочу реализовать log 4net для этого в моем приложении регистрации.

Например - Есть два приложения App1 и App2. Входит один человек, пытающийся взять логи того, что он будет делать в App1, давая какое-то имя, которое мы храним в базе данных. Точно так же многие другие люди могут вести журналы для этих двух приложений, параллельно назначая собственное имя файла.

Так что мне нужно сделать, это создать файл журнала с входными именами и, соответственно, записывать журналы параллельно. С каждым логом у меня есть FileName, в который он должен писать. Я не уверен, какой из приложений лучше подходит для этой цели, чтобы не происходила потеря данных или несоответствие другим файлам журнала. Мне также нужно сделать резервные копии и ограничить размер файла журнала. Должен ли я создавать несколько приложений или несколько регистраторов динамически или что-то еще, чтобы журнал 4net продолжал записывать журналы в правильные файлы?

Я пытался создать один регистратор stati c с

log4net.GlobalContext.Properties["LogFileName"] = filePath; //log file path
log4net.Config.XmlConfigurator.ConfigureAndWatch(new FileInfo("log4net.config"));

но это изменило имя глобально, и другие журналы записали в неправильный файл. Я использовал RollingFileAppender, но в разделе часто задаваемых вопросов журнала 4net он гласит:

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

Мне нужна реальная помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...