log4net: ошибка не может создать приложение [RollingLogFileAppender]

Итак, у меня есть проект в репозитории git и 2 ветки: master и fix-master. Я не изменил код, связанный с log4net, в fix-master. Но каждый раз, когда я запускаю мастер - у меня нет этой проблемы, если я делаю заказ на fix-master, у меня есть эта ошибка после этой строки:

private static readonly ILog Log = LogManager.GetLogger(typeof(Program));

person Chusya    schedule 26.09.2019    source источник
comment
Вы не должны видеть ошибки, выдаваемые из log4net, если только вы специально не настроили это - в соответствии с часто задаваемые вопросы log4net не будет генерировать неожиданные исключения во время выполнения, что может привести к сбою вашего приложения. Если по какой-либо причине log4net выдает необработанное исключение (кроме ArgumentException и ArgumentNullException, которые могут быть выброшены), отправьте электронное письмо в список рассылки [email protected]. Неперехваченные исключения рассматриваются как серьезные ошибки, требующие немедленного внимания.   -  person stuartd    schedule 27.09.2019
comment
Я предлагаю вам включить отладку log4net и посмотреть, почему он не может создать файл.   -  person stuartd    schedule 27.09.2019
comment
Какая у тебя ошибка? Можете ли вы поделиться конфигурацией log4net?   -  person Chetan Ranpariya    schedule 27.09.2019


Ответы (1)


Помимо очевидных кандидатов (неверный путь к файлу, ошибка прав доступа), проблема может заключаться даже в блокировке мьютекса:

https://issues.apache.org/jira/browse/LOG4NET-506

RollingFileAppender блокирует папку журнала в некоторых случаях

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

ПРЕДЛОЖЕНИЕ:

Добавьте эту строку в ваш app.config/web.config в appSettings, чтобы включить внутреннюю отладку:

<add key="log4net.Internal.Debug" value="true"/>

Это даст вам такой вывод как на системную консоль, так и на System.Diagnostics.Trace

log4net:ERROR Could not create Appender [RollingLogFileAppender] of type [log4net.Appender.RollingFileAppender]. Reported error follows.
System.UnauthorizedAccessException: Access to path 'D__Logs_' denied. (Translated from french)
   à System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   à System.Threading.Mutex.MutexTryCodeHelper.MutexTryCode(Object userData)
   à System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData)
   à  System.Threading.Mutex.CreateMutexWithGuaranteedCleanup(Boolean initiallyOwned, String name, Boolean& createdNew, SECURITY_ATTRIBUTES secAttrs)
   à  System.Threading.Mutex..ctor(Boolean initiallyOwned, String name, Boolean& createdNew, MutexSecurity mutexSecurity)
   à  System.Threading.Mutex..ctor(Boolean initiallyOwned, String name, Boolean& createdNew)
   à  log4net.Appender.RollingFileAppender.ActivateOptions()
   à  log4net.Repository.Hierarchy.XmlHierarchyConfigurator.ParseAppender(XmlElement appenderElement)
log4net:ERROR Appender named [RollingLogFileAppender] not found.

Пожалуйста, попробуйте это и опубликуйте, что вы найдете!

person paulsm4    schedule 27.09.2019