winform中跨层使用log4net

log4net是一个基于Apache log4j的日志框架,用于.NET应用程序。它提供了灵活的日志记录机制,包括多种日志级别(如DEBUG、INFO、WARN、ERROR、FATAL)和丰富的配置选项。在C#中使用log4net库来记录日志是一种常见且强大的方式。

https://logging.apache.org/log4net/index.html

  测试版本号  log4net:3.2.0.0  net:8.0

 

跨层使用log4net的步骤是:

一、安装log4net

通过NuGet包管理器来安装log4net。

注意:在调用log4net的层中,都需要引用log4net。

二、配置log4net

在公共层command中新建文件夹log。

在log中设置log4net的配置文件log4net.config

<?xml version="1.0" encoding="utf-8" ?>

<configuration>

  <configSections>

        <section name ="log4net" type ="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>

  </configSections>

  <log4net>

        <root>

       <!—最底层级别,从低到高依次为ALL、DEBUG、INFO、WARN、ERROR、FATAL –>

             <level value="DEBUG"/>

       <!—日志信息输出到文件 à

             <appender-ref ref="RollingFileAppender"></appender-ref>

        </root>

    //目标文件消息设置

        <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">

             <!—文件名 à

<file type="log4net.Util.PatternString" value="logs\%date{yyyy-MM-dd}.log"/>

             <!—是否追加写入 à

             <appendToFile value="true" />

             <!—文件大小及超出后的备用文件数 à

             <rollingStyle value="Size" />

             <maxSizeRollBackups value="5" />

             <maximumFileSize value="10MB"/>

             <staticLogFileName value="true" />

             <!—信息输出格式 à

             <layout type="log4net.Layout.PatternLayout">

           <!—应用程序启动时 à

                   <param name="Header" value="&#xD;&#xA; ------------------ 启动 ------------------- &#xA;&#xD;"/>

           <!—应用程序关闭时 à

                   <param name="Footer" value="&#xD;&#xA; -------------------关闭-------------------- &#xA;&#xD;"/>

           <!—应用程序运行时要记录的日志格式 à

                   <conversionPattern value="%date{yyyy-MM-dd HH:mm:ss} [%-5level]  thread:%thread mess:%message%newline"/>

             </layout>

        </appender>

  </log4net>

</configuration>

 

 

三、日志工具文件 Log类

public class Log

 {

     //获取log4net中日志实例

     static readonly ILog log = LogManager.GetLogger(typeof(Log));

   public static void Info(string message)

     {

         log.Info(message);       

     } 

     public static void Warning(string message)

     {

         log.Warn(message);     

     }

 

     public static void Error(string message)

     {

         log.Error(message);     

     }

 

     public static void Debug(string message)

     {

         log.Debug(message);   

     }

     public static void Fatal(string message)

     {

         log.Fatal(message);        

     }

 }

 

四、启动配置

(一)在项目启动层的主文件Program.cs中初始化日志配置

internal static class Program

{   

    /// <summary>

    /// 应用程序的主入口点。

    /// </summary>

    [STAThread]

    static void Main()

    {

       log4net.Config.XmlConfigurator.Configure(new System.IO.FileInfo(Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "log\\log4net.config")));

        Application.EnableVisualStyles();

        Application.SetCompatibleTextRenderingDefault(false);

        Application.Run(new Form1());

    }

}

  

(二)在项目中需要输出的代码中输出日志信息

try

 {

……

 }

 catch (Exception ex)

 {

     Log.Error($" {ex.Message},请检查...");

 }

 

posted on 2026-01-10 01:17  祁连牧师  阅读(5)  评论(0)    收藏  举报