Log4j和slf4j

2023-05-16

 

slf4j

slf4j(全称是Simple Loging Facade For Java)是一个为Java程序提供日志输出的统一接口,并不是一个具体的日志实现方案,就

好像我们经常使用的JDBC一样,只是一种规则而已。因此单独的slf4j是不能工作的,它必须搭配其他具体的日志实现方案,比如

apache的org.apache.log4j.Logger,jdk自带的java.util.logging.Logger等等。</p>

 log4j2

Apache Log4j2是对Log4j的升级,与其前身Log4j 1.x相比有了显着的改进,并提供了许多Logback等可用的改进

 

SLF4J,共享记录与log4j2的关系

commons-logging和slf4j一样都是日志的接口

log4j,logback等等才是日志的真正实现。当我们调用接口时,接口的工厂会自动寻找恰当的实现,返回一个实现的实例给我服务。这些过程都是透明化的,用户不需要进行任何操作!

 

1)Log4j2怎么结合SLF4J?

2)用slf4j+Log4j2的优点

 

 

1.添加SLF4J的jar包 

添加log4j2的jar包 &nbsp 配置log4j2 

 2.优势
1.可以很好的与客户端解耦<

 

2.节省内存           

 

 log4j的传统日志系统里并没有占位符的概念

 

5.编码实战

Log4j2的配置

web.xml

jar包依赖

log4j2.xml  配置文件

 

<?xml version="1.0" encoding="UTF-8"?>
<!--
    Configuration后面的status,这个用于设置log4j2自身内部的信息输出,可以不设置,当设置成trace时,你会看到log4j2内部各种详细输出。
-->
<!--
    monitorInterval:Log4j能够自动检测修改配置 文件和重新配置本身,设置间隔秒数。
-->
<configuration status="error" monitorInterval="30">
    <!--先定义所有的appender-->
    <appenders>
        <!--这个输出控制台的配置-->
        <Console name="Console" target="SYSTEM_OUT">
            <!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)-->
            <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
            <!--这个都知道是输出日志的格式-->
            <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>
        </Console>
        <!--文件会打印出所有信息,这个log每次运行程序会自动清空,由append属性决定,这个也挺有用的,适合临时测试用-->
        <File name="log" fileName="log/test.log" append="false">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>
        </File>

        <!-- 这个会打印出所有的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档-->
        <RollingFile name="RollingFile" fileName="logs/app.log"
                     filePattern="log/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz">
            <PatternLayout pattern="%d{yyyy-MM-dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n"/>
            <SizeBasedTriggeringPolicy size="50MB"/>
            <!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件,这里设置了20 -->
            <DefaultRolloverStrategy max="20"/>
        </RollingFile>
    </appenders>


    <!--然后定义logger,只有定义了logger并引入的appender,appender才会生效-->

    <loggers>
        <!--建立一个默认的root的logger-->
        <root level="info">
            <appender-ref ref="RollingFile"/>
            <appender-ref ref="Console"/>
        </root>
    </loggers>
</configuration>



        <!--服务器的日志输出不成功有两个原因
                1. 文件没有写入权限
                 2.路径不对     采用绝对路径-->

A.前提条件

没有调用Log4j-1.x的内部方法,比如Appenders(),LoggerRepository()

没有使用代码的方式配置Log4j

没有调用DOMConfigurator或PropertyConfigurator这两个类

B.替换jar包

把 Log4j-1.x.jar 换成 log4j-1.2-api.jar(这个jar包内有log4j-api、log4j-core两个jar包)

C.修改代码

首先要清楚,jar包前缀不一样,版本1是org.apache.log4j,版本2是org.apache.logging.log4j

a.版本1是Logger.getLogger( ),改成版本2的LoggerManager.getLogger( )

b.版本1是Logger.getRootLogger( ),改成版本2的LoggerManager.getRootLogger( )

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Log4j和slf4j 的相关文章

随机推荐

  • MySQL常用语句详解

    Winfrom连接网页 第一种方法 xff1a 调用本地浏览器System Diagnostics Process Start 34 https www microsoft com zh cn 34 第二种方法 xff1a 连接 strin
  • Maven搭建SSH连接Oracle数据库

    Maven工程搭建SSH连接Oracle数据库 首先在pom xml里引入jar lt project xmlns 61 34 http maven apache org POM 4 0 0 34 xmlns xsi 61 34 http
  • MyBatis简介与运用

    1 Mybatis简介 1 1 Mybatis是什么 Mybatis是一个java的持久层框架 xff0c 保存到数据库 持久化 xff1a 保存到本地文件 1 2 Mybatis的作用 操作数据库 1 3 为什么要学习mybatis 1
  • SpringMVC入门原理

    1 Springmvc原理 1 1 什么是springmvc SpringMVC是一个Spring框架内置的对MVC模式的实现 xff0c 就spring的一个子模块 1 2 什么是mvc Model view controller 模型
  • MyBatis逆向工程建立实体

    下面是用MyEcplise开发工具 为例 使用Ecplise操作步骤雷同于MyEcplise 1 第一步 2 搜索MyBatis 等待装载完成 xff0c 完成后 3 创建一个web项目 创建包 xff0c 创建generatorConfi
  • python apscheculer 报错 skipped: maximum number of running instances reached (1)

    apscheduler定时任务报错skipped maximum number of running instances reached 1 原因是默认max instances最大定时任务是1个 xff0c 可以通过在add job中调m
  • java 反射很重要

    1 创建一个User类 public class User private String username private String password private String name public User public Use
  • Netty入门案例教程

    1 首先导入netty all 5 0 0 Alpha1 jar 2 创建一个NettyConfig 整个工程的全局配置 package websocketcom netty import io netty channel group Ch
  • 微信公众号分享的坑

    记一次微信公众号分享sdk 这里我的脚本是用jquery写的 xff0c 不带框架源码 首先创建jsp引入JavaScript微信分享js lt script type 61 34 text javascript 34 src 61 34
  • java linux部署web项目详解

    下载SecureCRT连接linux xff0c 激活SecureCRT跟怎么连接自行百度喽 xff0c 下面开始操作linux服务器 1 查看安装的jdk rpm qa grep java 2 如果有旧的jdk xff0c 就卸载jdk
  • 人工智能如何可以思考?

    近日在给同事讲人工智能的时候 xff0c 提到当数据量不够的时候 xff0c 必要时需要加入人工工程 xff0c 引导计算机 归纳 一些知识 xff0c 毕竟计算机智能比起人类智能 xff0c 最大的缺陷可能在于不懂得 举一反三 换句话说
  • 在Ubuntu 20.04上安装Google Chrome浏览器

    在Ubuntu上安装Google Chrome
  • OpenCV人脸识别之FisherFace算法(LDA线性判别分析)

    FisherFace算法 Fisherface是由Ronald Fisher发明的 xff0c Fisherface所基于的LDA xff08 Linear Discriminant Analysis xff0c 线性判别分析 xff09
  • Spring 源码-Spring的注解是如何解析的?(7)

    我们知道 ConfigurationClassPostProcessor实际上是BeanFactoryPostProcessor的一个实现类 xff0c 他特殊的地方是他还实现了BeanDefinitionRegisterPostProce
  • 在Keil5中更改工程名字的方法(亲测有效)

    1 在工程所在文件夹中的用户文件夹中找到 uvprojx 和 uvoptx 将其名称改为自己需要的名称 xff1b 2 打开 uvprojx 文件 xff0c 点击魔术棒旁边的 彩色品字 更改Project Targets 中的名称 xff
  • linux防火墙添加开放端口

    linux防火墙添加开放端口 添加开放端口 sudo firewall cmd zone 61 public add port 61 开放的端口号 协议 tcp udp permanent permanent 添加的端口号永久生效 使新增的
  • Python爬虫初探(六)——爬虫之xpath实战(爬取高考分数线信息)

    一 得到要爬取的url 二 拿到网页源码 三 得到各省份分数链接 上一章我们讨论了xpath的简单使用 xff0c 这次我们就来实际应用一下xpath xff0c 看看它使用有多方便 最近高考结束 xff0c 各省分数线也陆续公布了 xff
  • win10,secoclient总是报错:与对方建立连接超时,配置错误或网络故障

    场景 xff1a 连接公司vpn secoclient总是报错 xff1a 与对方建立连接超时 xff0c 配置错误或网络故障 解决方案 xff1a 1 进入 设备管理器 gt 网络适配器 xff0c 找到SVN Adapter V1 0
  • 容器agetty进程占用cpu过高问题解决方案

    1 查到agetty进程是哪一个容器的 命令 docker span class token function ps span q span class token operator span span class token functi
  • Log4j和slf4j

    slf4j slf4j 全称是Simple Loging Facade For Java 是一个为Java程序提供日志输出的统一接口 xff0c 并不是一个具体的日志实现方案 xff0c 就 好像我们经常使用的JDBC一样 xff0c 只是