log4net: ошибка не может создать аппендер [RollingLogFileAppender] - PullRequest
1 голос
/ 27 сентября 2019

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

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

1 Ответ

1 голос
/ 27 сентября 2019

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

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.

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

...