log4netの設定を専用ファイル log4net.config に切り出し、web.configと分離します。アセンブリ属性により設定ファイルを自動読み込みします。
1 log4net.config を作成
ウェブサイトのルートディレクトリへ配置
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<log4net>
<!--ログをtxtファイルへ出力-->
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<!--ログ出力先:サイトルート/logs-->
<param name="File" value="logs\\" />
<!--ファイルへ追記書き込み-->
<param name="AppendToFile" value="true" />
<!--バックアップファイル最大10個保持-->
<param name="MaxSizeRollBackups" value="10" />
<!--日付で動的ファイル名を生成-->
<param name="StaticLogFileName" value="false" />
<!--ディレクトリ構成 logs/yyyy/MM/yyyy-MM-dd.log -->
<param name="DatePattern" value="yyyy\\MM\\yyyy-MM-dd".log"" />
<!--日付単位でログローテーション-->
<param name="RollingStyle" value="Date" />
<!--ログ出力フォーマット-->
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
</layout>
</appender>
<!--ルートロガー、出力アペンダーを紐付け-->
<root>
<level value="ALL" />
<appender-ref ref="RollingLogFileAppender" />
</root>
</log4net>
</configuration>Code language: HTML, XML (xml)
2 AssemblyInfo.cs に初期化設定を記述
プロジェクトの Properties/AssemblyInfo.cs を開き、ファイル末尾に下記を追加:
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]Code language: JSON / JSON with Comments (json)
ConfigFile="log4net.config":独立した設定ファイルのパスを指定(サイトルート)Watch=true:ホットリロード有効。サイト再起動不要でlog4net.config変更が即時反映
3 ページ側呼び出しコード
using log4net;
public partial class Default : System.Web.UI.Page
{
// ロガーインスタンス作成
public ILog log = LogManager.GetLogger("Default.aspx用ロガー");
protected void Page_Load(object sender, EventArgs e)
{
log.Info("通常ログ");
log.Error("エラーログ");
log.Debug("デバッグ情報");
}
}
独立設定ファイル