我正在尝试让log4net在遗留应用程序中运行,但是当它启动时我会收到此异常(来自DbgView):
log4net:ERROR XmlHierarchyConfigurator:对象类型 [log4net.Appender.FileAppender]不能分配给类型 [log4net.Appender.FileAppender + LockingModelBase]。没有 可接受的类型转换。
log4net:错误XmlHierarchyConfigurator:无法创建要设置的对象 param: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>
我发现其他一些帖子说添加行<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
应该解决这个问题,但它没有解决任何问题。我正在寻找的最终结果是一个日志文件,其中包含允许我调试此应用程序的信息,如何让这个东西工作?
另外,我已经阅读了stackoverflow上的所有其他相关问题(其中有几十个),这是我见过的唯一另一个甚至有相同的异常消息,并且没有提供适用的答案我:Unable to set property [lockingModel] on object [log4net.Appender.RollingFileAppender] using value [MinimalLock]
答案 0 :(得分:0)
我手头没有编译器,但是当我将纯文本配置与我的工作配置集进行比较时,我相信你错过了
<file value="PATHTOFILE\error.log" />
你已经了
<param name="File" value="PATHTOFILE\error.log" />
这种差异看起来可能是原因。
答案 1 :(得分:0)
您将某些内容保存到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>