1

log4net をレガシー アプリケーションで動作させようとしていますが、起動時に (DbgView から) 次の例外が発生します。

log4net: エラー XmlHierarchyConfigurator: オブジェクト タイプ [log4net.Appender.FileAppender] はタイプ [log4net.Appender.FileAppender+LockingModelBase] に割り当てられません。許容される型変換はありません。

log4net: エラー XmlHierarchyConfigurator: パラメータを設定するオブジェクトの作成に失敗しました: lockedModel

これは何を意味し、さらに重要なことに、このエラーを黙らせて機能させるにはどうすればよいですか? 違いがある場合、これは 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値 [MinimalLock] を使用してオブジェクト [log4net.Appender.RollingFileAppender] にプロパティ [lockingModel] を設定するには

4

2 に答える 2

0

私はコンパイラを手元に持っていませんが、プレーン テキストの構成と作業中の構成セットを比較すると、

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

あなたが持っているインスト

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

この違いが原因のようです。

于 2012-07-10T19:30:48.373 に答える
0

C: のルート ディレクトリに何かを保存します。そうする権限があるかどうかを確認してください。私は同じ問題に遭遇しましたが、ファイルを D: または C: のいくつかのフォルダーに保存することで解決しましたが、ルート構成でこれを試してみてください:

<!--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>
于 2015-11-18T03:00:37.717 に答える