首页 > 其他分享 >log4net 根据日志Level级别记录日志

log4net 根据日志Level级别记录日志

时间:2022-12-08 17:12:12浏览次数:43  
标签:log4net Level System configPath using 日志 LogHelper

配置文件

<?xml version="1.0" encoding="utf-8" ?>
<log4net>
  <!-- Debug 将日志以回滚文件的形式写到文件中 -->
  <appender name="RollingFileDebug" type="log4net.Appender.RollingFileAppender" >
    <!-- 日志文件存放位置,可以为绝对路径也可以为相对路径 -->
    <file value="Log_Console/" />
    <!-- 日志文件的命名规则 -->
    <datePattern value="yyyy-MM-dd/'Debug.log'"/>
    <!-- 将日志信息追加到已有的日志文件中-->
    <appendToFile value="true" />
    <rollingStyle value="Size" />
    <maxSizeRollBackups value="-1" />
    <maximumFileSize value="5MB" />
    <!-- 指定按日期切分日志文件 -->
    <rollingStyle value="Date"/>
    <!-- 当将日期作为日志文件的名字时,必须将staticLogFileName的值设置为false -->
    <staticLogFileName value="false" />
    <!-- 最小锁定模式,以允许多个进程可以写入同一个文件 -->
    <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
    <layout type="log4net.Layout.PatternLayout">
      <param name="ConversionPattern" value="时间:%d 内容: %m%n" />
    </layout>
    <filter type="log4net.Filter.LevelRangeFilter">
      <param name="LevelMin" value="Debug" />
      <param name="LevelMax" value="Debug" />
    </filter>
  </appender>
 
  <!-- Info 将日志以回滚文件的形式写到文件中 -->
  <appender name="RollingFileInfo" type="log4net.Appender.RollingFileAppender" >
    <!-- 日志文件存放位置,可以为绝对路径也可以为相对路径 -->
    <file value="Log_Console/" />
    <!-- 日志文件的命名规则 -->
    <datePattern value="yyyy-MM-dd/'Info.log'"/>
    <!-- 将日志信息追加到已有的日志文件中-->
    <appendToFile value="true" />
    <maxSizeRollBackups value="-1" />
    <maximumFileSize value="5MB" />
    <!-- 指定按日期切分日志文件 -->
    <rollingStyle value="Date"/>
    <!-- 当将日期作为日志文件的名字时,必须将staticLogFileName的值设置为false -->
    <staticLogFileName value="false" />
    <!-- 最小锁定模式,以允许多个进程可以写入同一个文件 -->
    <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
    <layout type="log4net.Layout.PatternLayout">
      <param name="ConversionPattern" value="时间:%d 内容: %m%n" />
    </layout>
    <filter type="log4net.Filter.LevelRangeFilter">
      <param name="LevelMin" value="Info" />
      <param name="LevelMax" value="Info" />
    </filter>
  </appender>
  <!-- WARN 将日志以回滚文件的形式写到文件中 -->
  <appender name="RollingFileWarn" type="log4net.Appender.RollingFileAppender" >
    <!-- 日志文件存放位置,可以为绝对路径也可以为相对路径 -->
    <file value="Log_Console/" />
    <!-- 日志文件的命名规则 -->
    <datePattern value="yyyy-MM-dd/'Warn.log'"/>
    <!-- 将日志信息追加到已有的日志文件中-->
    <appendToFile value="true" />
    <rollingStyle value="Size" />
    <maxSizeRollBackups value="-1" />
    <maximumFileSize value="5MB" />
    <!-- 指定按日期切分日志文件 -->
    <rollingStyle value="Date"/>
    <!-- 当将日期作为日志文件的名字时,必须将staticLogFileName的值设置为false -->
    <staticLogFileName value="false" />
    <!-- 最小锁定模式,以允许多个进程可以写入同一个文件 -->
    <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
    <layout type="log4net.Layout.PatternLayout">
      <param name="ConversionPattern" value="时间:%d 内容: %m%n" />
    </layout>
    <filter type="log4net.Filter.LevelRangeFilter">
      <param name="LevelMin" value="Warn" />
      <param name="LevelMax" value="Warn" />
    </filter>
  </appender>
  <!-- Error 将日志以回滚文件的形式写到文件中 -->
  <appender name="RollingFileError" type="log4net.Appender.RollingFileAppender" >
    <!-- 日志文件存放位置,可以为绝对路径也可以为相对路径 -->
    <file value="Log_Console/" />
    <!-- 日志文件的命名规则 -->
    <datePattern value="yyyy-MM-dd/'Error.log'"/>
    <!-- 将日志信息追加到已有的日志文件中-->
    <appendToFile value="true" />
    <rollingStyle value="Size" />
    <maxSizeRollBackups value="-1" />
    <maximumFileSize value="5MB" />
    <!-- 指定按日期切分日志文件 -->
    <rollingStyle value="Date"/>
    <!-- 当将日期作为日志文件的名字时,必须将staticLogFileName的值设置为false -->
    <staticLogFileName value="false" />
    <!-- 最小锁定模式,以允许多个进程可以写入同一个文件 -->
    <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
    <layout type="log4net.Layout.PatternLayout">
      <param name="ConversionPattern" value="时间:%d 内容: %m%n" />
    </layout>
    <filter type="log4net.Filter.LevelRangeFilter">
      <param name="LevelMin" value="Error" />
      <param name="LevelMax" value="Error" />
    </filter>
  </appender>
  <!-- Fatal 将日志以回滚文件的形式写到文件中 -->
  <appender name="RollingFileFatal" type="log4net.Appender.RollingFileAppender" >
    <!-- 日志文件存放位置,可以为绝对路径也可以为相对路径 -->
    <file value="Log_Console/" />
    <!-- 日志文件的命名规则 -->
    <datePattern value="yyyy-MM-dd/'Fatal.log'"/>
    <!-- 将日志信息追加到已有的日志文件中-->
    <appendToFile value="true" />
    <rollingStyle value="Size" />
    <maxSizeRollBackups value="-1" />
    <maximumFileSize value="5MB" />
    <!-- 指定按日期切分日志文件 -->
    <rollingStyle value="Date"/>
    <!-- 当将日期作为日志文件的名字时,必须将staticLogFileName的值设置为false -->
    <staticLogFileName value="false" />
    <!-- 最小锁定模式,以允许多个进程可以写入同一个文件 -->
    <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
    <layout type="log4net.Layout.PatternLayout">
      <param name="ConversionPattern" value="时间:%d 内容: %m%n" />
    </layout>
    <filter type="log4net.Filter.LevelRangeFilter">
      <param name="LevelMin" value="Fatal" />
      <param name="LevelMax" value="Fatal" />
    </filter>
  </appender>
  <root>
    <!--控制级别,由低到高:ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF
     比如定义级别为INFO,则INFO级别向下的级别,比如DEBUG日志将不会被记录
     如果没有定义LEVEL的值,则缺省为DEBUG-->
    <appender-ref ref="RollingFileDebug" />
    <appender-ref ref="RollingFileInfo" />
    <!--<appender-ref ref="RollingFileWarn" />-->
    <!--<appender-ref ref="RollingFileError" />-->
    <!--<appender-ref ref="RollingFileFatal" />-->
    <level value="DEBUG" />
  </root>
  <logger name="NHibernate">
    <level value="WARN" />
  </logger>
</log4net>

 

日志记录类

using log4net;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "Log4Net.config", Watch = true)]
namespace FileMonitor
{
    /// <summary>
    /// 日志帮助类
    /// 需要设置 log4net.Config.XmlConfigurator.ConfigureAndWatch(new System.IO.FileInfo(Server.MapPath("~/MyConfig/Log4Net.config")));
    /// 调用:private static readonly log4net.ILog MyLog = Log.LogHelper.GetInstance();
    /// </summary>
    public class LogHelper
    {
        private static ILog log;
        private static LogHelper logHelper = null;
        /// <summary>
        /// 初始化
        /// </summary>
        /// <returns></returns>
        public static ILog GetInstance()
        {
            logHelper = new LogHelper(null);
 
            return log;
        }
        /// <summary>
        /// 初始化
        /// </summary>
        /// <param name="configPath"></param>
        /// <returns></returns>
        public static ILog GetInstance(string configPath)
        {
            logHelper = new LogHelper(configPath);
 
            return log;
        }
        /// <summary>
        /// 构造函数
        /// </summary>
        /// <param name="configPath">配置文件路径</param>
        private LogHelper(string configPath)
        {
            if (!string.IsNullOrEmpty(configPath))
            {
                log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
                log4net.Config.XmlConfigurator.Configure(new System.IO.FileInfo(configPath));
            }
            else
            {
                log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
            }
        }
    }
}

 

引用的log4net.dll文件

 

 

 

出处:https://blog.csdn.net/gavinoldmen/article/details/116203589

=======================================================================================

在程序中如何根据日志级别,输出不同的日志呢?如何获取日志的Level级别?请听我给你分析。

 

标签:log4net,Level,System,configPath,using,日志,LogHelper
From: https://www.cnblogs.com/mq0036/p/16966615.html

相关文章

  • 查看80端口日志
    [root@VFSD~]#netstat-tunlp|grep80tcp600127.0.0.1:8005:::*LISTEN29218/javatcp600:::80......
  • Pytest----如何使用logging模块写日志
    OverridetheentrypointofanimageIntroducedinGitLabandGitLabRunner9.4.Readmoreaboutthe extendedconfigurationoptions.Beforeexplainingtheav......
  • 分布式实时日志:ELK 的部署架构方案
    一、概述ELK已经成为目前最流行的集中式日志解决方案,它主要是由Beats、Logstash、Elasticsearch、Kibana等组件组成,来共同完成实时日志的收集,存储,展示等一站式的解决方案......
  • Netbeans 16 的学习日志(购物车GUI)
    1.前期准备Netbeans点我下载Netbeans快捷键2.......
  • pytest + yaml 框架 -9.logging日志输出和保存
    前言pytest运行yaml文件默认在控制台显示简短的信息,当我们需要排查问题时,需开启日志追踪更多的信息。logging日志开启pytest的日志分2个部分:console控制台输出的......
  • easylogging++的那些事(四)源码分析(十)扩展日志回滚
    目录日志回滚接口扩展后的日志回滚接口增加创建新文件的LoggingFlag(CreateNewLogFile)改动后的实现在上一篇我们介绍了easylogging++的异步日志的实现。在结尾的时候......
  • easylogging++的那些事(四)源码分析(九)异步日志
    目录异步日志是什么?异步日志相关的类AsyncLogItem类AsyncLogQueue类AsyncLogDispatchCallback类IWorker类AsyncDispatchWorker类构造函数析构函数启动异步日志写日志......
  • logback出现大量XXX_IS_UNDEFINED日志文件的问题
    前言在springboot中采用logback将日志打印到文件时,你是否遇到过文件名为XXX_IS_UNDEFINED的情况,今天带大家一块分析解决这个问题。一、logback中spring属性读取示例配置:<?x......
  • es对日志数据进行索引生命周期管理
    前言在采用ELK分布式日志采集平台的时候,一般都会采用ES来存储采集的日志信息。日志信息一般都是持续增长的,是典型的时序数据。如果不对采集的日志数据做生命周期管理,很容易......
  • logback过期日志文件自动删除
    前言logback应该是目前最主流的日志框架了,在实际使用中经常遇到打印的日志文件不会自动删除,导致日志文件占有大量磁盘空间的问题。本文主要介绍logback日志文件自动删除的实......