首页 > 其他分享 >log4net 的简单配置

log4net 的简单配置

时间:2022-11-14 08:55:22浏览次数:75  
标签:log4net info string 配置 static 简单 logInfo public

安装 Nuget 包

▲ 这个没什么说的。

log4net.config

右键项目新建程序配置:

log4net.config

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <!--配置节点-->
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
  </configSections>
  <log4net>
    <appender name="InfoAppender" type="log4net.Appender.RollingFileAppender">
      <!--日志路径-->
      <param name="File" value="Log\\Info\\" />
      <!--是否是向文件中追加日志-->
      <param name="AppendToFile" value="true" />
      <!--log保留天数-->
      <param name="MaxSizeRollBackups" value="30" />
      <!--log文件大小-->
      <param name="maximumFileSize" value="100MB"/>
      <!--日志文件名是否是固定不变的-->
      <param name="StaticLogFileName" value="false" />
      <!--日志文件名格式为:2008-08-31.log-->
      <param name="DatePattern" value="yyyy-MM-dd'_INFO''.log'" />
      <!--日志根据日期滚动-->
      <param name="RollingStyle" value="Composite" />
      <!--最小锁定模型以允许多个进程可以写入同一个文件-->
      <param name="lockingModel" type="log4net.Appender.FileAppender+MinimalLock" />
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%d [thread:%t] %-3p %F line:%L func:%c - %m%n" />
      </layout>
      <filter type="log4net.Filter.LevelMatchFilter">
        <levelToMatch  value="INFO" />
      </filter>
      <filter type="log4net.Filter.DenyAllFilter" />
    </appender>

    <appender name="DebugAppender" type="log4net.Appender.RollingFileAppender">
      <!--日志路径-->
      <param name="File" value="Log\\Debug\\" />
      <!--是否是向文件中追加日志-->
      <param name="AppendToFile" value="true" />
      <!--log保留天数-->
      <param name="MaxSizeRollBackups" value="30" />
      <!--log文件大小-->
      <param name="maximumFileSize" value="100MB"/>
      <!--日志文件名是否是固定不变的-->
      <param name="StaticLogFileName" value="false" />
      <!--日志文件名格式为:2008-08-31.log-->
      <param name="DatePattern" value="yyyy-MM-dd'_DEBUG''.log'" />
      <!--日志根据日期滚动-->
      <param name="RollingStyle" value="Composite" />
      <!--最小锁定模型以允许多个进程可以写入同一个文件-->
      <param name="lockingModel" type="log4net.Appender.FileAppender+MinimalLock" />
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%d [thread:%t] %-5p %7c - %m%n" />
      </layout>
      <filter type="log4net.Filter.LevelMatchFilter">
        <levelToMatch  value="DEBUG" />
      </filter>
      <filter type="log4net.Filter.DenyAllFilter" />
    </appender>

    <appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender">
      <!--日志路径-->
      <param name="File" value="Log\\Error\\" />
      <!--是否是向文件中追加日志-->
      <param name="AppendToFile" value="true" />
      <!--log保留天数-->
      <param name="MaxSizeRollBackups" value="30" />
      <!--log文件大小-->
      <param name="maximumFileSize" value="100MB"/>
      <!--日志文件名是否是固定不变的-->
      <param name="StaticLogFileName" value="false" />
      <!--日志文件名格式为:2008-08-31.log-->
      <param name="DatePattern" value="yyyy-MM-dd'_ERROR''.log'" />
      <!--日志根据日期滚动-->
      <param name="RollingStyle" value="Composite" />
      <!--最小锁定模型以允许多个进程可以写入同一个文件-->
      <param name="lockingModel" type="log4net.Appender.FileAppender+MinimalLock" />
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%d [thread:%t] %p %c - %m%n" />
      </layout>
      <filter type="log4net.Filter.LevelRangeFilter">
        <levelMin  value="WARN" />
        <levelMax value="FATAL"/>
      </filter>
    </appender>
    <root>
      <!--(高) OFF > FATAL > ERROR > WARN > INFO > DEBUG > ALL (低) -->
      <!--系统上线初期或发生异常可将此Level设定为DEBUG或ALL-->
      <level value="ALL" />
      <appender-ref ref="InfoAppender" />
      <appender-ref ref="DebugAppender" />
      <appender-ref ref="ErrorAppender" />
    </root>
  </log4net>
</configuration>

自动复制配置文件

LogHelper 类包装

public static class LogHelper
{
    static LogHelper()
    {
        //log4net.Config.XmlConfigurator.Configure();
        log4net.Config.XmlConfigurator.Configure(new System.IO.FileInfo("./log4net.config")); // 设置更新是自动复制
    }

    private static ILog logInfo = LogManager.GetLogger("Default");
    /// <summary>
    /// 自定义方法名,同一个方法中可只传一次
    /// </summary>
    /// <param name="className"></param>
    /// <returns></returns>
    public static ILog GetLogger(string className)
    {
        logInfo = LogManager.GetLogger(className);
        return logInfo;
    }
    /// <summary>
    /// 记录Info日志
    /// </summary>
    /// <param name="info"></param>
    public static void Info(string info)
    {
        if (logInfo.IsInfoEnabled && !string.IsNullOrEmpty(info))
        {
            logInfo.Info(info);
        }
    }
    /// <summary>
    /// 记录error日志
    /// </summary>
    /// <param name="info"></param>
    public static void Error(string info)
    {
        if (!string.IsNullOrEmpty(info))
        {
            logInfo.Error(info);
        }
    }
    /// <summary>
    /// 记录debug日志
    /// </summary>
    /// <param name="info"></param>
    public static void Debug(string info)
    {
        if (logInfo.IsDebugEnabled && !string.IsNullOrEmpty(info))
        {
            logInfo.Debug(info);
        }
    }
    /// <summary>
    /// 记录Fatal日志 致命错误
    /// </summary>
    /// <param name="info"></param>
    public static void Fatal(string info)
    {
        logInfo.Fatal(info);
    }
    /// <summary>
    /// 警告信息
    /// </summary>
    /// <param name="info"></param>
    public static void Warn(string info)
    {
        logInfo.Warn(info);
    }
}

AssemblyInfo.cs 配置

新增:

新增:

//设置独立配置文件,log4net.config
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]

使用

其他程序集使用的时候也需要引用 log4net.dll。如果需要增加新的 log 对象:GetLogger(string className) 一下。




参考:

https://blog.csdn.net/baidu_37842527/article/details/125851930

标签:log4net,info,string,配置,static,简单,logInfo,public
From: https://www.cnblogs.com/huvjie/p/16887947.html

相关文章

  • VirtualBox虚拟机的网络配置
    本文介绍如何对VirtualBox中的虚拟机进行网络配置,使其既能与宿主机连接,也能访问外网。首先点击VirtualBox中的设置按钮为该虚拟机配置两张网卡,网卡1用于访问外网,网卡2......
  • K8s系列---【KubeSphere配置应用商店的仓库地址】
    KubeSphere配置应用商店的仓库地址1.找到提供chart的helm仓库https://helm.sh/随便搜索一个chart,例如redis,找到bitnami的url"https://charts.bitnami.com/bitnami" ......
  • LinkdBlockingQueue简单介绍
    LinkdBlockingQueue是一种基于单向链表的阻塞队列,队头和队尾是两个指针愤慨操作,所用采用了两把锁和两个条件,同时1个Atomicinteger记录count数       这里......
  • 垃圾收集器使用场景和ZGC的简单调优
    本文背景在对于去哪儿网的《ZGC在去哪儿机票运价系统实践》的这篇文章阅读之后,对于parNew+cms这对垃圾收集的组合和g1以及zgc这几种垃圾收集器有了更加深入的了解,特此形......
  • c#NEW GUID()、GUID.PARSE()、GUID.TRYPARSE() 的简单性能对比
    https://www.freesion.com/article/7574843646/  可以看出耗时差距微乎其微,并且以上代码在不同硬件环境下所耗时也有些许变化。......
  • 在2D游戏中使用简单的碰撞函数实现角色移动
    在这学期我们寝室共同制作的2D游戏项目中,我仔细研究了2D游戏角色的操作逻辑。在我们的项目中,Player类是玩家类。这个类中的move()函数负责玩家移动。玩家移动需要考......
  • 配置环境变量的意义 win10配置vs2017环境变量
    你虽然装了很多软件,有很多功能,但是系统并不知道。配置环境变量就是告诉系统,我们可以用哪些功能和到哪里调用。参考: Windows10下配置VS2017环境变量_明卿的博客-CSDN博客......
  • 学习Java前的快捷键和软件配置
    目标熟练掌握java每天编写一篇笔记java和python都要学习每天最少要学习4个视频电脑的快捷键ctrl+c复制ctrl+v粘贴ctrl+a全选ctrl+x剪切ctrl+z......
  • 如何在虚拟机上安装和配置Spark开发环境
    如何文章目录​​如何​​​​在虚拟机上安装和配置Spark开发环境​​​​下载解压安装包​​​​配置环境变量:​​​​修改Spark配置文件​​​​校验​​在虚拟机上安装和......
  • Nginx的概述与配置
    Nginx概述1、Nginx的特点一款高性能、轻量级web服务•稳定性高•系统资源消耗低高•对HTTP并发连接的处理能力单台物理服务器可支持30000~50000个并发请求2、Ng......