(ASP.NET, C#)Log4Netを使う

NuGet

  • ソリューションエクスプローラのプロジェクト直下の参照を右クリック

  • NuGetパッケージの管理

  • 参照タブのテキストボックスに「log4net」と入力

  • リストの中に「log4net」を選択、右ペインでインストールボタンを押下

設定ファイル

  • ソリューションエクスプローラのプロジェクト直下のPropertiesを開く

  • Properties/AssemblyInfo.cs

~(略)~
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "Log4net.xml", Watch = true)]
  • Global.asax.cs
public class Global : HttpApplication
{
    void Application_Start(object sender, EventArgs e)
    {
        ~(略)~
        
        log4net.Config.XmlConfigurator.Configure();
    }
}
  • Web.config
<configuration>
  <configSections>
    <!-- log4netセクションのハンドラ設定 -->
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
  </configSections>

   ~(略)~
  <log4net>
    <!-- ===================================================================== -->
    <!--     ログ出力の対象レベルと出力先の設定                                -->
    <!-- ===================================================================== -->
    <root>
      <!-- ログのレベルを指定 -->
      <!-- ALL > DEBUG > INFO > WARN > ERROR > FATAL -->
      <level value="ALL"/>
      <!-- どのログ出力先を使用するか -->
      <appender-ref ref="RollingFileAppender"/>
    </root>
    <!-- ===================================================================== -->
    <!--                 ログ出力先の設定(アペンダーの設定)                    -->
    <!-- ===================================================================== -->
    <!-- ▼ファイル出力用[RollingFileAppender](日付や時刻の制約に基づいたログファイルの生成) -->
    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
      <param name="Encoding" value="utf-8"/>
      <!-- ファイル名 -->
      <param name="File" value="logs\"/>
      <!-- 追記する場合true/上書きする場合false -->
      <param name="AppendToFile" value="true"/>
      <!-- 日付や時刻の制約によるログファイルの切替 -->
      <param name="RollingStyle" value="Date"/>
      <!-- 上から「毎月、毎週、毎日、半日、毎時、毎分」の設定(デフォルトは毎時) -->
      <param name="DatePattern" value='""yyyyMMdd".log"'/>
      <param name="StaticLogFileName" value="false"/>
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n"/>
      </layout>
    </appender>
  </log4net>

ログ出力

  • ログを出力したいCSファイル
    public partial class WebForm1 : System.Web.UI.Page
    {
        // ロガー
        private static readonly log4net.ILog logger = 
            log4net.LogManager.GetLogger(
                System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

        /// <summary>
        /// 画面ロード
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Page_Load(object sender, EventArgs e)
        {
            logger.Info("Debug message");
            logger.Info("Info message");
            logger.Warn("Warn message");
            logger.Error("Error message");
            logger.Fatal("Fatal message");

    ~(略)~