【问题标题】:log4net not working, no file created, getting exception messagelog4net 不工作,没有创建文件,收到异常消息
【发布时间】:2012-07-10 18:52:41
【问题描述】:

我正在尝试让 log4net 在旧应用程序中工作,但是当它启动时出现此异常(来自 DbgView):

log4net:ERROR XmlHierarchyConfigurator: 对象类型 [log4net.Appender.FileAppender] 不可分配给类型 [log4net.Appender.FileAppender+LockingModelBase]。没有 可接受的类型转换。

log4net:ERROR XmlHierarchyConfigurator: 无法创建要设置的对象 参数:lockingModel

这是什么意思,更重要的是,我如何消除此错误并使其正常工作?如果这有什么不同,这在 Outlook 插件上。这是我的 app.config 文件(一些非必要部分因保密而被编辑):

<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net"/>
  </configSections>
  <log4net>
    <root>
        <level value="DEBUG" />
        <appender-ref ref="LogFileAppender" />
    </root>
    <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender" >
        <param name="File" value="c:\errlog.txt" />
        <param name="AppendToFile" value="true" />
        <rollingStyle value="Size" />
        <maxSizeRollBackups value="10" />
        <maximumFileSize value="10MB" />
        <staticLogFileName value="true" />
        <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
        <layout type="log4net.Layout.PatternLayout">
            <param name="ConversionPattern" value="%-5p%d{yyyy-MM-dd hh:mm:ss} – %m%n" />
        </layout>
    </appender>
  </log4net>    
  <system.diagnostics>
    <sources>
        <source name="System.Net" tracemode="includehex" maxdatasize="1024">
            <listeners>
                <add name="System.Net"/>
            </listeners>
        </source>
        <source name="System.Net.Sockets">
            <listeners>
                <add name="System.Net"/>
            </listeners>
        </source>
        <source name="System.Net.Cache">
            <listeners>
                <add name="System.Net"/>
            </listeners>
        </source>
    </sources>
    <switches>
        <add name="System.Net" value="Verbose"/>
        <add name="System.Net.Sockets" value="Verbose"/>
        <!--add name="System.Net.Cache" value="Verbose"/-->
    </switches>
    <sharedListeners>
        <add name="System.Net"
          type="System.Diagnostics.TextWriterTraceListener"
          initializeData="network.log" />
    </sharedListeners>
    <trace autoflush="true"/>
  </system.diagnostics>
  </appSettings>
</configuration>

我发现许多其他帖子说添加行 &lt;lockingModel type="log4net.Appender.FileAppender+MinimalLock" /&gt; 应该可以解决这个问题,但它不能解决任何问题。我正在寻找的最终结果是一个日志文件,其中包含允许我调试这个应用程序的信息,我该如何让这个东西工作?

另外,我已经阅读了关于 stackoverflow 的所有其他相关问题(其中有几十个),这是我见过的唯一一个甚至有相同异常消息的问题,并且没有提供适用于的答案我:Unable to set property [lockingModel] on object [log4net.Appender.RollingFileAppender] using value [MinimalLock]

【问题讨论】:

    标签: c# log4net


    【解决方案1】:

    我手头没有编译器,但是当我将纯文本配置与我的工作配置集进行比较时,我相信你会错过

    <file value="PATHTOFILE\error.log" />
    

    告诉你有

    <param name="File" value="PATHTOFILE\error.log" />
    

    这种差异似乎是可能的原因。

    【讨论】:

      【解决方案2】:

      你在 C: 的根目录下保存了一些东西,请检查你是否有权限这样做。我遇到了同样的问题,但我解决了将文件保存到 D: 或 C: 在 root 配置下试试这个:

      <!--log to file-->
      <system.diagnostics>
        <trace autoflush="true">
          <listeners>
            <add
              name="textWriterTraceListener"
              type="System.Diagnostics.TextWriterTraceListener"
              initializeData="C:\Users\Klaus\Documents\log4net.txt" />
          </listeners>
        </trace>
      </system.diagnostics>
      

      【讨论】:

        猜你喜欢
        • 2013-09-16
        • 1970-01-01
        • 2017-07-19
        • 2019-04-01
        • 2019-12-15
        • 2012-07-19
        • 1970-01-01
        • 2019-07-23
        • 1970-01-01
        相关资源
        最近更新 更多