log4net の設定

AssemblyInfo.cs で設定してもログが出力されなくて、
プログラムで log4net.Config.XmlConfigurator.Configure() を呼び出す必要がある。

using log4net.Config;

class Program
{
    static int Main(string[] args)
    {
        XmlConfigurator.Configure();
        var success = new YourConsoleApplication().Run();
        return success ? 0 : 1;
    }
}

また、log4net.config として設定ファイルを分割できなくて
App.config に記述するしかないっぽい。

App.config

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
  </configSections>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1"/>
  </startup>
  <log4net>
    <!-- log4net settings -->
  </log4net>
</configuration>

log4net.config の分離

いろいろ試したら log4net.config を分離できた。

AssemblyInfo.cs

ConfigFile を指定する。

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config")]

App.config

特に記述する必要はない。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1"/>
  </startup>
</configuration>

log4net.config

プロパティの 出力ディレクトリにコピー常にコピー にする。(重要)

<log4net>
  <!-- log4net settings -->
</log4net>