Log4net(13) 一度設定したAppenderの変更

それ程こんなことがしたくなる機会はないと思うのだが、まぁ一応こんなこともできるんだよーっという紹介をしておく。

設定ファイル

<?xml version="1.0" encoding="utf-8" ?>
<log4net>
    <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
        <layout type="log4net.Layout.PatternLayout">
            <param name="ConversionPattern" value="%m%n" />
        </layout>
    </appender>

    <root>
        <level value="ALL" />
        <appender-ref ref="ConsoleAppender" />
    </root>
</log4net>

ソースファイル

logger.Error("Before");

foreach(log4net.Appender.IAppender IApp in logger.Logger.Repository.GetAppenders())
{
    if(IApp.Name == "ConsoleAppender")
    {
        log4net.Appender.ConsoleAppender ConApp = (log4net.Appender.ConsoleAppender)IApp;
        ConApp.Layout = new log4net.Layout.PatternLayout("[msg] = %m%n");
    }

}

logger.Error("After");

出力結果

Before
[msg] = After