Hướng dẫn tích hợp Log4net vào ứng dụng WPF

  1. Trước tiên, cài đặt gói Log4net qua NuGet Package Manager trong Visual Studio.

  2. Cấu hình file App.config với các thiết lập logging sau:

<configuration>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" />
    </startup>
  <!--Cấu hình log4net bắt đầu-->
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
  </configSections>
  <log4net>
    <root>
      <level value="ALL" />
    </root>
    <logger name="SystemLogger" additivity="false">
      <level value="ALL" />
      <appender-ref ref="LogFileAppender" />
      <appender-ref ref="NetworkAppender" />
    </logger>
    <logger name="ErrorLogger" additivity="false">
      <level value="ALL" />
      <appender-ref ref="ErrorFileAppender" />
    </logger>
    <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">
      <file value="C:/Data/AppLogs/SystemLog.txt" />
      <appendToFile value="true" />
      <Encoding value="utf-8" />
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
      <rollingStyle value="Composite" />
      <DatePattern value="yyyyMMdd'.txt'"></DatePattern>
      <maxSizeRollBackups value="1" />
      <maximumFileSize value="20MB" />
      <staticLogFileName value="true" />
      <filter type="log4net.Filter.LevelRangeFilter">
        <levelMin value="INFO" />
        <levelMax value="FATAL" />
      </filter>
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date{yyyy-MM-dd|HH:mm:ss.fff}|%-5level|%message%newline" />
      </layout>
    </appender>
    <appender name="NetworkAppender" type="log4net.Appender.UdpAppender">
      <remoteAddress value="192.168.1.100" />
      <remotePort value="514" />
      <Encoding value="utf-8" />
      <layout type="log4net.Layout.PatternLayout, log4net">
        <conversionPattern value="%date{(MM/dd HH:mm:ss.fff)}|%level|%message%newline" />
      </layout>
    </appender>
    <appender name="ErrorFileAppender" type="log4net.Appender.RollingFileAppender">
      <file value="C:/Data/AppLogs/ErrorLog.txt" />
      <appendToFile value="true" />
      <Encoding value="utf-8" />
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
      <rollingStyle value="Composite" />
      <DatePattern value="yyyyMMdd'.txt'"></DatePattern>
      <maxSizeRollBackups value="5" />
      <maximumFileSize value="10MB" />
      <staticLogFileName value="true" />
      <filter type="log4net.Filter.LevelRangeFilter">
        <levelMin value="ERROR" />
        <levelMax value="FATAL" />
      </filter>
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date{yyyy-MM-dd|HH:mm:ss.fff}|%-5level|%message%newline" />
      </layout>
    </appender>
  </log4net>
</configuration>
  1. Trong file AssemblyInfo.cs, thêm dòng cấu hình sau:
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "App.config", ConfigFileExtension = "config", Watch = true)]

Lưu ý: Đôi khi việc chỉ định tên file cấu hình có thể gây ra vấn đề, trong khi không chỉ định lại hoạt động bình thường.

  1. Khởi tạo và sử dụng logger trong code:
public partial class MainWindow : Window
{
    private static readonly ILog systemLogger = LogManager.GetLogger("SystemLogger");
    
    public MainWindow()
    {
        InitializeComponent();
        systemLogger.Info("Ứng dụng đã khởi động");
        LoadApplicationData();
    }
    
    private void LoadApplicationData()
    {
        try
        {
            // Thực hiện tải dữ liệu ứng dụng
            systemLogger.Info("Bắt đầu tải dữ liệu ứng dụng");
            // ... code xử lý
            systemLogger.Info("Hoàn tất tải dữ liệu ứng dụng");
        }
        catch (Exception ex)
        {
            systemLogger.Error($"Lỗi khi tải dữ liệu: {ex.Message}");
            // Xử lý lỗi
        }
    }
}

Với cấu hình này, mỗi khi gọi systemLogger.Info(), systemLogger.Debug() hoặc các phương thức khác, thông tin log sẽ được ghi vào file cấu hình tương ứng.

Thẻ: WPF Log4net logging .NET C#

Đăng vào ngày 28 tháng 6 lúc 23:34