• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

log4net的详细使用教程

武飞扬头像
fengxingke
帮助1

1、下载log4net并添加引用或通过NuGet安装程序包

学新通

 2、配置文件中添加配置

在配置文件web.config或App.config中的Configuration节点下增加以下配置

  1.  
     
  2.  
    <configSections>
  3.  
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
  4.  
    </configSections>
  5.  
    <log4net>
  6.  
    <appender name="Console" type="log4net.Appender.ConsoleAppender">
  7.  
    <layout type="log4net.Layout.PatternLayout">
  8.  
    <!-- Pattern to output the caller's file name and line number -->
  9.  
    <conversionPattern value="%5level [%thread] (%file:%line) - %message%newline"/>
  10.  
    </layout>
  11.  
    </appender>
  12.  
    <!--定义输出到文件中-->
  13.  
    <appender name="RollingFile" type="log4net.Appender.RollingFileAppender">
  14.  
    <!--定义文件存放位置-->
  15.  
    <file value="App_Log\\log"/>
  16.  
    <!--是否追加到文件-->
  17.  
    <appendToFile value="true"/>
  18.  
    <!--记录日志写入文件时,不锁定文本文件,防止多线程时不能写Log,官方说线程非安全-->
  19.  
    <lockingModel type="log4net.Appender.FileAppender MinimalLock"/>
  20.  
    <!--最多产生的日志文件数,超过则只保留最新的n个。设定值value="-1"为不限文件数-->
  21.  
    <maxSizeRollBackups value="-1"/>
  22.  
    <!--按照何种方式产生多个日志文件(日期[Date],文件大小[Size],混合[Composite])-->
  23.  
    <rollingStyle value="Composite"/>
  24.  
    <datePattern value="yyyy\\yyyyMM\\yyyyMMdd'.txt'"/>
  25.  
    <!--是否只写到一个文件中-->
  26.  
    <staticLogFileName value="false"/>
  27.  
    <!--每个文件的大小。只在混合方式与文件大小方式下使用。
  28.  
    超出大小后在所有文件名后自动增加正整数重新命名,数字最大的最早写入。
  29.  
    可用的单位:KB|MB|GB。不要使用小数,否则会一直写入当前日志-->
  30.  
    <maximumFileSize value="100MB"/>
  31.  
    <!--计数类型为1,2,3…-->
  32.  
    <param name="CountDirection" value="1"/>
  33.  
    <layout type="log4net.Layout.PatternLayout">
  34.  
    <!--输出格式-样例:
  35.  
    记录时间:2022-08-24 17:59:31,172 线程ID:[4] 日志级别:INFO
  36.  
    出错类:Log4NetDemo.MainClass 属性:[UserName:John]
  37.  
    日志描述:创建连接失败。-->
  38.  
    <conversionPattern value="记录时间:te 线程ID:[%thread] 日志级别:%-5level %n出错类:%logger 属性:[UserName:%property{UserName}] %n日志描述:%message%newline %n"/>
  39.  
    </layout>
  40.  
    </appender>
  41.  
    <root>
  42.  
    <!--日志等级:OFF > FATAL > ERROR > WARN > INFO > DEBUG > ALL-->
  43.  
    <level value="ALL"/>
  44.  
    <!--<appender-ref ref="Console"/>-->
  45.  
    <appender-ref ref="RollingFile"/>
  46.  
    </root>
  47.  
    </log4net>
学新通

3、编写日志写入帮助类

注意,在命名空间上方要加代码:[assembly: log4net.Config.XmlConfigurator(Watch = true)],才能正确读取配置文件中的内容。

  1.  
    using System;
  2.  
    using System.Collections.Generic;
  3.  
    using System.Linq;
  4.  
    using System.Text;
  5.  
     
  6.  
    [assembly: log4net.Config.XmlConfigurator(Watch = true)]
  7.  
    namespace Demo.Helper
  8.  
    {
  9.  
    /// <summary>
  10.  
    /// 日志帮助类
  11.  
    /// </summary>
  12.  
    public class LogHelper
  13.  
    {
  14.  
    #region 输出日志到Log4Net
  15.  
     
  16.  
    /// <summary>
  17.  
    /// 输出日志到Log4Net
  18.  
    /// </summary>
  19.  
    /// <param name="t"></param>
  20.  
    /// <param name="ex">异常对象</param>
  21.  
    /// <param name="level">日志等级,默认为:1 Debug 级</param>
  22.  
    public static void WriteLog(Type t, Exception ex, LogLevel level = LogLevel.DEBUG)
  23.  
    {
  24.  
    WriteLog(t, ex.Message, level);
  25.  
    }
  26.  
     
  27.  
    #endregion
  28.  
     
  29.  
    #region 输出日志到Log4Net
  30.  
     
  31.  
    /// <summary>
  32.  
    /// 输出日志到Log4Net
  33.  
    /// </summary>
  34.  
    /// <param name="t"></param>
  35.  
    /// <param name="msg">错误信息</param>
  36.  
    /// <param name="level">日志等级,默认为:1 Debug 级</param>
  37.  
    public static void WriteLog(Type t, string msg, LogLevel level = LogLevel.DEBUG)
  38.  
    {
  39.  
    // 对应日志信息中的“%property{UserName}”
  40.  
    //log4net.ThreadContext.Properties["UserName"] = "Test";
  41.  
     
  42.  
    log4net.ILog log = log4net.LogManager.GetLogger(t);
  43.  
    switch (level)
  44.  
    {
  45.  
    // 日志等级:OFF > FATAL > ERROR > WARN > INFO > DEBUG > ALL
  46.  
    case LogLevel.DEBUG:
  47.  
    log.Debug(msg);
  48.  
    break;
  49.  
    case LogLevel.INFO:
  50.  
    log.Info(msg);
  51.  
    break;
  52.  
    case LogLevel.WARN:
  53.  
    log.Warn(msg);
  54.  
    break;
  55.  
    case LogLevel.ERROR:
  56.  
    log.Error(msg);
  57.  
    break;
  58.  
    case LogLevel.FATAL:
  59.  
    log.Fatal(msg);
  60.  
    break;
  61.  
    default:
  62.  
    log.Debug(msg);
  63.  
    break;
  64.  
    }
  65.  
    }
  66.  
     
  67.  
    #endregion
  68.  
     
  69.  
    }
  70.  
     
  71.  
    /// <summary>
  72.  
    /// 日志等级:
  73.  
    /// OFF > FATAL > ERROR > WARN > INFO > DEBUG > ALL
  74.  
    /// </summary>
  75.  
    public enum LogLevel
  76.  
    {
  77.  
    /// <summary>
  78.  
    /// ALL
  79.  
    /// </summary>
  80.  
    ALL = 0,
  81.  
     
  82.  
    /// <summary>
  83.  
    /// DEBUG
  84.  
    /// </summary>
  85.  
    DEBUG = 1,
  86.  
     
  87.  
    /// <summary>
  88.  
    /// INFO
  89.  
    /// </summary>
  90.  
    INFO = 2,
  91.  
     
  92.  
    /// <summary>
  93.  
    /// WARN
  94.  
    /// </summary>
  95.  
    WARN = 3,
  96.  
     
  97.  
    /// <summary>
  98.  
    /// ERROR
  99.  
    /// </summary>
  100.  
    ERROR = 4,
  101.  
     
  102.  
    /// <summary>
  103.  
    /// FATAL
  104.  
    /// </summary>
  105.  
    FATAL = 5,
  106.  
     
  107.  
    /// <summary>
  108.  
    /// OFF
  109.  
    /// </summary>
  110.  
    OFF = 6
  111.  
    }
  112.  
    }
学新通

4、通过日志帮助类调用方法写入日志信息

  1.  
    using System;
  2.  
     
  3.  
    namespace Demo
  4.  
    {
  5.  
    static class Program
  6.  
    {
  7.  
    /// <summary>
  8.  
    /// 应用程序的主入口点。
  9.  
    /// </summary>
  10.  
    static void Main()
  11.  
    {
  12.  
    LogHelper.WriteLog(typeof(Demo), "输出日志信息。", LogLevel.INFO);
  13.  
    }
  14.  
    }
  15.  
    }
学新通

5、日志样式

  1.  
    记录时间:2022-08-24 17:58:48,881 线程ID:[4] 日志级别:INFO
  2.  
    出错类:Demo 属性:[UserName:John]
  3.  
    日志描述:监听启动中...
  4.  
     
  5.  
    记录时间:2022-08-24 17:58:48,912 线程ID:[4] 日志级别:DEBUG
  6.  
    出错类:Demo 属性:[UserName:John]
  7.  
    日志描述:创建连接。
  8.  
     
  9.  
    记录时间:2022-08-24 17:59:10,167 线程ID:[4] 日志级别:ERROR
  10.  
    出错类:Demo 属性:[UserName:John]
  11.  
    日志描述:连接失败。

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgihaah
系列文章
更多 icon
同类精品
更多 icon
继续加载