【问题标题】:log4net: error could not create appender [RollingLogFileAppender]log4net:错误无法创建附加程序 [RollingLogFileAppender]
【发布时间】:2020-01-27 06:25:35
【问题描述】:

所以,我在 git repo 中有一个项目,以及 2 个分支:master 和 fix-master。 我没有在 fix-master 中更改与 log4net 关联的代码。但是每次,当我开始 master - 我没有这个问题,如果我结帐到 fix-master,我会在这行之后出现这个错误:

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

【问题讨论】:

  • 你不应该看到从 log4net 抛出的错误,除非你已经特别设置它这样做 - 根据the faq log4net 不会在运行时抛出意外异常,可能会导致你的应用程序坠毁。如果由于任何原因,log4net 抛出未捕获的异常(可能抛出的 ArgumentException 和 ArgumentNullException 除外),请发送电子邮件至 log4net-user@logging.apache.org 邮件列表。未捕获的异常被作为需要立即关注的严重错误处理。”
  • 我建议你enable log4net debugging 看看为什么它无法创建文件。
  • 你有什么错误?可以分享一下log4net的配置吗?

标签: c# git log4net appender


【解决方案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.

请试试这个,然后发回你找到的东西!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-07
    • 1970-01-01
    • 1970-01-01
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多