การใช้ Apache log4net™ กับ .NET Core

  1. ติดตั้ง log4net ผ่าน NuGet
  2. สร้างไฟล์ log4net.config
  3. บอก log4net ให้โหลดไฟล์คอนฟิก

1.ติดตั้ง log4net ผ่าน NuGet

PM> Install-Package log4net -Version 2.0.12
> dotnet add package log4net --version 2.0.12

2.สร้างไฟล์ log4net.config

สร้างไฟล์ log4net.config ไว้เก็บค่า config เกี่ยวกับ log4net

จากนั้นใส่ค่าในไฟล์ log4net.config ตามนี้

<?xml version="1.0" encoding="utf-8" ?>
<log4net>
  <appender name="console" type="log4net.Appender.ConsoleAppender">
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date %level - %message%newline" />
    </layout>
  </appender>
  <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
    <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
    <file value="log/" />
    <datePattern value="yyyy-MM-dd.'log'"/>
    <staticLogFileName value="false"/>
    <appendToFile value="true"/>
    <rollingStyle value="Date"/>
    <maxSizeRollBackups value="100"/>
    <maximumFileSize value="15MB"/>
    <encoding value="UTF-8"/>
    <layout type="log4net.Layout.PatternLayout">
      <param name="ConversionPattern" value="%-5p%d{ yyyy-MM-dd HH:mm:ss} - %m  %n" />
    </layout>
  </appender>
  <root>
    <level value="ALL"/>
    <appender-ref ref="console" />
    <appender-ref ref="RollingLogFileAppender"/>
  </root>
</log4net>

และที่ “Copy to Output Directory” ให้เลือกเป็น “Copy Always

3.บอก log4net ให้โหลดไฟล์คอนฟิก

Program.cs

using System;
using System.IO;
using System.Reflection;
using System.Xml;

namespace ConsoleApp1
{
    class Program
    {
        public static readonly log4net.ILog log = log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);

        static void Main(string[] args)
        {
            XmlDocument log4netConfig = new XmlDocument();
            log4netConfig.Load(File.OpenRead("log4net.config"));
            var repo = log4net.LogManager.CreateRepository(Assembly.GetEntryAssembly(),
                       typeof(log4net.Repository.Hierarchy.Hierarchy));
            log4net.Config.XmlConfigurator.Configure(repo, log4netConfig["log4net"]);

            log.Info("Hello World!");
        }
    }
}