1. ホーム
  2. file

[解決済み] Log4Netの外部ファイルへの設定がうまくいかない

2023-02-19 20:21:24

質問

log4net を使用しており、外部設定ファイルにその設定を指定したいと考えています (他のセクションで行ったように)。これを行うために、私たちは App.config の log4net セクションを次のように変更しました。

...
<section name="log4net" 
     type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
...
<log4net configSource="Log.config" />
...

そして、Log.Configファイル(App.configと同じディレクトリ)には、以下のようになります。

<log4net>
  <appender name="General" type="log4net.Appender.FileAppender">
    <file value="myapp.log" />
    <layout type="log4net.Layout.SimpleLayout" />
  </appender>
  <root>
    <appender-ref ref="General" />
  </root>
</log4net>

しかし、アプリを実行しても、ログファイルは作成されません(ロギングも行われません)。また、コンソールに出力されるエラーメッセージもありません。

Log.config ファイルの内容を App.config に戻す (上記の最初のコード行を置き換える) と、期待どおりに動作します。外部ファイルで動作しない理由について、何か思い当たることはありますか?

どのように解決するのですか?

以下のような属性が AssemblyInfo.cs ファイルにあります。

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "Log4Net.config", Watch = true)]

と、ロギング機能を必要とする各クラスの冒頭にこのようなコードを記述します。

private static readonly ILog log = 
LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

私はこれと他の情報を含むブログの記事を持っている ここに .