Console ใช้ Apache log4net™

  1. ติดตั้ง log4net ผ่าน NuGet
  2. บอกโปรแกรมให้โหลดไฟล์ log4net.config
  3. สร้างไฟล์ log4net.config
  4. เพิ่มโค๊ดที่ Program.cs
  5. แก้ไขไฟล์ .gitignore

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

PM> Install-Package log4net

2.บอกโปรแกรมให้โหลดไฟล์ log4net.config

ที่ด้านล่างของไฟล์ Properties/AssemblyInfo.cs เพิ่ม

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

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

สร้างไฟล์ log4net.config และที่ “Copy to Output Directory” ให้เลือกเป็น “Copy if newer

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

4.เพิ่มโค๊ดที่ Program.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;

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

        static void Main(string[] args)
        {
            try
            {
                log.Info("*********************************");
                log.Info("************* BEGIN *************");
                log.Info(AppDomain.CurrentDomain.FriendlyName);


                log.Info("************** END **************");
                log.Info("");
            }
            catch (Exception ex)
            {
                log.Error(ex.Message);
                log.Error(ex.ToString());
            }
        } // end main

    } // end class
}
INFO  2020-08-27 10:13:16 li:18 - [Main] *********************************  
INFO  2020-08-27 10:13:16 li:19 - [Main] ************* BEGIN *************  
INFO  2020-08-27 10:13:16 li:20 - [Main] ConsoleApp1.vshost.exe  
INFO  2020-08-27 10:13:16 li:23 - [Main] ************** END **************  
INFO  2020-08-27 10:13:16 li:24 - [Main]   

5.แก้ไขไฟล์ .gitignore

เพิ่มบรรทัดที่ด้านล่างไฟล์

packages/