系列文章目录


文章目录

  • 系列文章目录
  • 前言
  • 一、jar包支持
  • 二、配置文件
  • 三、代码测试

前言

slf4j译为简单日志门面,是日志框架的抽象,实现了日志框架一些通用的api,而log4j和logback是众多日志框架中的几种。
log4j和logback可以单独的使用,也可以绑定slf4j一起使用。

  1. 单独使用。分别调用框架自己的方法来输出日志信息。
  2. 绑定slf4j一起使用。调用slf4j的api来输入日志信息,具体使用与底层日志框架无关(需要底层框架的配置文件)

结构图:

官方文档: https://www.slf4j.org/manual.html

本文主要是操作下slf4j绑定log4j


一、jar包支持

主要是如下三个包:
slf4j-log4j12.jar (适配器,桥接slf4j转log4j)
slf4j-api.jar (slf4j core 使用slf4j必须添加,这是slf4j日志门面,基本上为接口)
log4j.jar ( log4j日志实现)

使用Maven,则只需添加适配器jar包依赖即可:

<dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>1.7.21</version>
</dependency>

二、配置文件

log4j的正常运行需要配置文件,配置文件类型(二选一):

  1. log4j.xml
  2. log4j.properties

log4j.properties的配置文件书写和字段含义可以参考链接:
http://www.blogjava.net/alexprefect/articles/372959.html
https://blog.csdn.net/lgxzzz/article/details/119751533

这里使用xml配置,配置文件如下

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"><log4j:configuration><!-- 将日志信息输出到控制台 --><appender name="ConsoleAppender" class="org.apache.log4j.ConsoleAppender"><!-- 设置日志输出的样式 --><layout class="org.apache.log4j.PatternLayout"><!-- 设置日志输出的格式 --><param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss:SSS} %-5p [method:%l] %m%n" /></layout><!--过滤器设置输出的级别--><filter class="org.apache.log4j.varia.LevelRangeFilter"><!-- 设置日志输出的最小级别 --><param name="levelMin" value="DEBUG" /><!-- 设置日志输出的最大级别 --><param name="levelMax" value="ERROR" /><!-- 设置日志输出的xxx,默认是false --><param name="AcceptOnMatch" value="true" /></filter></appender><!-- 将日志信息输出到文件,但是当文件的大小达到某个阈值的时候,日志文件会自动回滚 --><appender name="RollingFileAppender" class="org.apache.log4j.RollingFileAppender"><!-- 设置日志信息输出文件全路径名 --><param name="File" value="D:/myCode/学习/log/logFolder/RollingFileAppender.log" /><!-- 设置是否在重新启动服务时,在原有日志的基础添加新日志 --><param name="Append" value="true" /><!-- 设置保存备份回滚日志的最大个数 --><param name="MaxBackupIndex" value="10" /><!-- 设置当日志文件达到此阈值的时候自动回滚,单位可以是KB,MB,GB,默认单位是KB --><param name="MaxFileSize" value="10KB" /><!-- 设置日志输出的样式 --><layout class="org.apache.log4j.PatternLayout"><!-- 设置日志输出的格式 --><param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss:SSS} %-5p [method:%l] %m%n" /></layout></appender><!-- 将日志信息输出到文件,可以配置多久产生一个新的日志信息文件 --><appender name="DailyRollingFileAppender" class="org.apache.log4j.DailyRollingFileAppender"><!-- 设置日志信息输出文件全路径名 --><param name="File" value="D:/myCode/学习/log/logFolder/DailyRollingFileAppender.log" /><!-- 设置日志每分钟回滚一次,即产生一个新的日志文件 --><param name="DatePattern" value="'.'yyyy-MM-dd-HH-mm'.log'" /><!-- 设置日志输出的样式 --><layout class="org.apache.log4j.PatternLayout"><!-- 设置日志输出的格式 --><param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss:SSS} %-5p [method:%l] %m%n" /></layout></appender><!-- 指定logger的设置,additivity指示是否遵循缺省的继承机制--><logger name="DailyRollingFileAppender" additivity="true"><level value ="WARN"/><appender-ref ref="DailyRollingFileAppender"/></logger><!--指定logger的设置,additivity指示是否遵循缺省的继承机制 --><logger name="RollingFileAppender" additivity="true"><level value ="ERROR"/><appender-ref ref="RollingFileAppender"/></logger><!-- 根logger的设置--><root><level value ="info"/><appender-ref ref="ConsoleAppender"/><appender-ref ref="DailyRollingFileAppender"/><appender-ref ref="RollingFileAppender"/></root></log4j:configuration>

三、代码测试


import org.slf4j.Logger;
import org.slf4j.LoggerFactory;public class TestLog4j {private static final Logger logger = LoggerFactory.getLogger(TestLog4j.class);public static void main(String[] args) {// 打印日志信息logger.trace("slf4j-log4j日志输出:This is trace message.");logger.debug("slf4j-log4j日志输出:This is debug message.");logger.info("slf4j-log4j日志输出:This is info message.");logger.warn("slf4j-log4j日志输出:This is warn message.");logger.error("slf4j-log4j日志输出:This is error message.");String key = "x";String value = "a";// 使用占位符输出日志信息logger.info("The {} = {}.", key, value);logger.info("The [{}] = [{}].", key, value);try {int i = 1 / 0;} catch (Exception e) {// 将系统异常信息写入日志logger.error("出现异常:", e);}}
}

测试结果

输出到文件

试下来,其实就是软件工程的思维,可以直接使用log4j,但这样不便于后续日志系统的变更,所以引入slf4j,也就是面向接口编程,具体需要使用哪个日志系统,则可以灵活改变

slf4j绑定log4j使用相关推荐

  1. android log4j slf4j,slf4j、log4j 的使用

    驱动和桥接 log4j是一个日志系统. slf4j是一个日志系统的封装,对外提供统一的API 使用slf4j需要下载 slf4j-api-x.x.x.jar 它提供对外一致的API接口,其本身不提供日 ...

  2. java日志框架JUL、JCL、Slf4j、Log4j、Log4j2、Logback 一网打尽

    为什么程序需要记录日志 我们不可能实时的24小时对系统进行人工监控,那么如果程序出现异常错误时要如何排查呢?并且系统在运行时做了哪些事情我们又从何得知呢?这个时候日志这个概念就出现了,日志的出现对系统 ...

  3. slf4j与log4j区别

    1.SLF4J(Simple logging Facade for Java) 意思为简单日志门面,它是把不同的日志系统的实现进行了具体的抽象化,只提供了统一的日志使用接口,使用时只需要按照其提供的接 ...

  4. Java日志框架SLF4J和log4j以及logback的联系和区别

    1.SLF4J(Simple logging Facade for Java) 意思为简单日志门面,它是把不同的日志系统的实现进行了具体的抽象化,只提供了统一的日志使用接口,使用时只需要按照其提供的接 ...

  5. slf4j,log4j,logback之间的关系

    1.SLF4J(Simple logging Facade for Java) 意思为简单日志门面,它是把不同的日志系统的实现进行了具体的抽象化,只提供了统一的日志使用接口,使用时只需要按照其提供的接 ...

  6. Slf4j、log4j、logback介绍

    Slf4j.log4j.logback介绍 简介 下图来源于slf4j官网,从图中来看,可以得到如下信息: slf4j是接口: log4j.logback.java.util.logging.slf4 ...

  7. slf4j 和 log4j的关系及合用Maven配置

    最近因为项目实在是太忙,都没有时间学习.有时候会很矛盾,一方面是全心全意的想去快速做完项目,一方面又想学习点新东西.这样导致这两三个月都没有去学习一些新的东西,这周我开始创建自己的maven项目,因为 ...

  8. 1.Slf4j使用log4j的配置参数、配置sl4j/log4j输出到不同的文件、案例

    1.Slf4j使用log4j的配置参数 转自:https://blog.csdn.net/yx0628/article/details/83214387 slf4j,即简单日志门面(Simple Lo ...

  9. SLF4J和log4j的整合使用

    概念 SLF4J:即简单日志门面(Simple Logging Facade for Java),不是具体的日志解决方案,它只服务于各种各样的日志系统.按照官方的说法,SLF4J是一个用于日志系统的简 ...

最新文章

  1. Java数据库foreign,mysql中的外键foreign key 作者:Java_xb
  2. Error: Most middleware (like bodyParser) ...
  3. 大数据系列文章-Hadoop的HDFS读写流程(二)
  4. Python Sphinx使用踩坑记录
  5. Visual c++6.0 如何自定义一个光标,使其变成字
  6. 表达式中常用到的运算符
  7. Analyzing Storage Performance using the Windows Performance Analysis ToolKit (WPT)
  8. linux下数据库时间格式,Java编程时间格式与数据库中时间格式转化
  9. Java并发编程:面试必备之线程池
  10. SharePoint 入门书籍推荐 转载来源http://www.cnblogs.com/jianyus/p/3513238.html
  11. Expression Blend实例中文教程(12) - 样式和模板快速入门Style,Template
  12. Geant4在Ubuntu下的安装教程
  13. html与css怎么混合运用,Web设计中的CSS混合模式
  14. 双目测距Python-OpenCV代码及详细解释
  15. 华中数控808系统说明书_国产数控系统的性能水平
  16. 我是猫,一只特立独行的猫
  17. gsensor架构和原理分析
  18. 设计模式之禅【代理模式】
  19. 使用CollapsingToolbarLayout高仿稀土掘金个人中心页
  20. ​网易游戏实时 HTAP 计费风控平台建设

热门文章

  1. Android 8新增的img文件
  2. 【转贴】[原创]V刹安装调整体会
  3. 用Tera Term取代Windows上的超级终端
  4. 网站快速通过ICP备案的方法!
  5. python2018会议培训
  6. 如何计算无人机机架对应螺旋桨大小和尺寸!
  7. 北斗三号频点_北斗三号最后一颗卫星正式入网 中国卫星导航系统开启“全球时代”...
  8. java反射与动态代理
  9. 差速驱动机器人轮间距校准
  10. Linux以及银河麒麟系统的一些基本认识