slf4j绑定log4j使用
系列文章目录
文章目录
- 系列文章目录
- 前言
- 一、jar包支持
- 二、配置文件
- 三、代码测试
前言
slf4j译为简单日志门面,是日志框架的抽象,实现了日志框架一些通用的api,而log4j和logback是众多日志框架中的几种。
log4j和logback可以单独的使用,也可以绑定slf4j一起使用。
- 单独使用。分别调用框架自己的方法来输出日志信息。
- 绑定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的正常运行需要配置文件,配置文件类型(二选一):
- log4j.xml
- 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使用相关推荐
- android log4j slf4j,slf4j、log4j 的使用
驱动和桥接 log4j是一个日志系统. slf4j是一个日志系统的封装,对外提供统一的API 使用slf4j需要下载 slf4j-api-x.x.x.jar 它提供对外一致的API接口,其本身不提供日 ...
- java日志框架JUL、JCL、Slf4j、Log4j、Log4j2、Logback 一网打尽
为什么程序需要记录日志 我们不可能实时的24小时对系统进行人工监控,那么如果程序出现异常错误时要如何排查呢?并且系统在运行时做了哪些事情我们又从何得知呢?这个时候日志这个概念就出现了,日志的出现对系统 ...
- slf4j与log4j区别
1.SLF4J(Simple logging Facade for Java) 意思为简单日志门面,它是把不同的日志系统的实现进行了具体的抽象化,只提供了统一的日志使用接口,使用时只需要按照其提供的接 ...
- Java日志框架SLF4J和log4j以及logback的联系和区别
1.SLF4J(Simple logging Facade for Java) 意思为简单日志门面,它是把不同的日志系统的实现进行了具体的抽象化,只提供了统一的日志使用接口,使用时只需要按照其提供的接 ...
- slf4j,log4j,logback之间的关系
1.SLF4J(Simple logging Facade for Java) 意思为简单日志门面,它是把不同的日志系统的实现进行了具体的抽象化,只提供了统一的日志使用接口,使用时只需要按照其提供的接 ...
- Slf4j、log4j、logback介绍
Slf4j.log4j.logback介绍 简介 下图来源于slf4j官网,从图中来看,可以得到如下信息: slf4j是接口: log4j.logback.java.util.logging.slf4 ...
- slf4j 和 log4j的关系及合用Maven配置
最近因为项目实在是太忙,都没有时间学习.有时候会很矛盾,一方面是全心全意的想去快速做完项目,一方面又想学习点新东西.这样导致这两三个月都没有去学习一些新的东西,这周我开始创建自己的maven项目,因为 ...
- 1.Slf4j使用log4j的配置参数、配置sl4j/log4j输出到不同的文件、案例
1.Slf4j使用log4j的配置参数 转自:https://blog.csdn.net/yx0628/article/details/83214387 slf4j,即简单日志门面(Simple Lo ...
- SLF4J和log4j的整合使用
概念 SLF4J:即简单日志门面(Simple Logging Facade for Java),不是具体的日志解决方案,它只服务于各种各样的日志系统.按照官方的说法,SLF4J是一个用于日志系统的简 ...
最新文章
- Java数据库foreign,mysql中的外键foreign key 作者:Java_xb
- Error: Most middleware (like bodyParser) ...
- 大数据系列文章-Hadoop的HDFS读写流程(二)
- Python Sphinx使用踩坑记录
- Visual c++6.0 如何自定义一个光标,使其变成字
- 表达式中常用到的运算符
- Analyzing Storage Performance using the Windows Performance Analysis ToolKit (WPT)
- linux下数据库时间格式,Java编程时间格式与数据库中时间格式转化
- Java并发编程:面试必备之线程池
- SharePoint 入门书籍推荐 转载来源http://www.cnblogs.com/jianyus/p/3513238.html
- Expression Blend实例中文教程(12) - 样式和模板快速入门Style,Template
- Geant4在Ubuntu下的安装教程
- html与css怎么混合运用,Web设计中的CSS混合模式
- 双目测距Python-OpenCV代码及详细解释
- 华中数控808系统说明书_国产数控系统的性能水平
- 我是猫,一只特立独行的猫
- gsensor架构和原理分析
- 设计模式之禅【代理模式】
- 使用CollapsingToolbarLayout高仿稀土掘金个人中心页
- ​网易游戏实时 HTAP 计费风控平台建设