概念

SLF4J:即简单日志门面(Simple Logging Facade for Java),不是具体的日志解决方案,它只服务于各种各样的日志系统。按照官方的说法,SLF4J是一个用于日志系统的简单Facade,允许最终用户在部署其应用时使用其所希望的日志系统。

在使用SLF4J的时候,不需要在代码中或配置文件中指定你打算使用那个具体的日志系统,SLF4J提供了统一的记录日志的接口,只要按照其提供的方法记录即可,最终日志的格式、记录级别、输出方式等通过具体日志系统的配置来实现,因此可以在应用中灵活切换日志系统。

官方网站:http://www.slf4j.org/

log4j:Log For Java,Apache的一个开源项目,可以灵活地记录日志信息,我们可以通过Log4j的配置文件灵活配置日志的记录格式、记录级别、输出格式,而不需要修改已有的日志记录代码。

官方网站:http://logging.apache.org/log4j/1.2/

使用介绍

maven构建项目,pom.xml添加代码:

<dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version>
</dependency>
<dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-slf4j-impl</artifactId><version>2.0.1</version>
</dependency>

下面是一个log4j配置示例:

# 日志输出级别(INFO)和输出位置(stdout,R)
log4j.rootLogger=INFO, stdout , R# 日志输出位置为控制台
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[QC] %p [%t] %C.%M(%L) | %m%n# 日志输出位置为文件
log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
log4j.appender.R.File=D:\\Tomcat 5.5\\logs\\qc.log
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d-[TS] %p %t %c - %m%n# 定义相应包路径下的日志输出级别
log4j.logger.com.alibaba=DEBUG
log4j.logger.com.opensymphony.oscache=ERROR
log4j.logger.org.springframework=DEBUG
log4j.logger.com.ibatis.db=WARN
log4j.logger.org.apache.velocity=FATALlog4j.logger.org.hibernate.ps.PreparedStatementCache=WARN
log4j.logger.org.hibernate=DEBUG
log4j.logger.org.logicalcobwebs=WARN

说明:

  • log4j.rootCategory=INFO, stdout , R

此句为将等级为INFO的日志信息输出到stdout和R这两个目的地,stdout和R的定义在下面的代码,可以任意起名。等级可分为OFFFATALERRORWARNINFODEBUGALL,如果配置OFF则不打出任何信息,如果配置为INFO这样只显示INFO, WARN, ERROR的log信息,而DEBUG信息不会被显示,具体讲解可参照第三部分定义配置文件中的logger。

  • log4j.appender.stdout=org.apache.log4j.ConsoleAppender

此句为定义名为stdout的输出端是哪种类型,可以是org.apache.log4j.ConsoleAppender(控制台),org.apache.log4j.FileAppender(文件),org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)

  • log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

此句为定义名为stdout的输出端的layout是哪种类型,可以是org.apache.log4j.HTMLLayout(以HTML表格形式布局),org.apache.log4j.PatternLayout(可以灵活地指定布局模式),org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)

  • log4j.appender.stdout.layout.ConversionPattern= [QC] %p [%t] %C.%M(%L) | %m%n

如果使用pattern布局就要指定的打印信息的具体格式ConversionPattern,打印参数如下:%m 输出代码中指定的消息;%M 输出打印该条日志的方法名;%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL;%r 输出自应用启动到输出该log信息耗费的毫秒数;%c 输出所属的类目,通常就是所在类的全名;%t 输出产生该日志事件的线程名;%n 输出一个回车换行符,Windows平台为"rn”,Unix平台为"n”;%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyyy-MM-dd HH:mm:ss,SSS},输出类似:2002-10-18 22:10:28,921;%l 输出日志事件的发生位置,及在代码中的行数;[QC]是log信息的开头,可以为任意字符,一般为项目简称。输出示例[TS] DEBUG [main] AbstractBeanFactory.getBean(189) | Returning cached instance of singleton bean 'MyAutoProxy'

使用步骤(这个是直接添加jar包,上面是maven引入jar)

第一步:在JavaWeb项目中使用SLF4J和LOG4J,需要在项目中添加下面三个jar包

1、log4j-1.2.x.jar

2、slf4j-api-1.x.x.jar

3、slf4j-log4j12-1.x.x.jar

x-具体版本号

第二步:在项目类路径下添加log4j.properties配置文件,具体内容参照上面的示例。

第三步:在项目的web.xml配置文件中添加加载log4j的配置

<!-- log4j配置文件位置 -->
<context-param><param-name>log4jConfigLocation</param-name><param-value>classpath:log4j.properties</param-value>
</context-param><!-- 利用spring来使用log4j -->
<listener><listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>

第四步:在需要输出日志的类中添加slf4j的logger实例对象:

// 导入slf4j类
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;// 添加slf4j日志实例对象
final static Logger logger = LoggerFactory.getLogger(Test.class);// 输出日志
logger.info("测试:{}", "输出日志");

第五步:启动并运行项目。

SLF4J和log4j的整合使用相关推荐

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

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

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

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

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

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

  4. 一文讲尽门面日志slf4j和log4j、log4j2、logback依赖jar引用关系

    前言 之前都是使用SparkStreaming开发,最近打算学习一下Flink,就从官网下载了Flink 1.11,打算搞一个客户端,将程序提交在yarn上.因为Flink从1.7之后就不再提供Had ...

  5. slf4j和log4j的使用

    一.log4j基本用法 首先,配置log4j的jar,maven工程配置以下依赖,非maven工程从maven仓库下载jar添加到"build path" 1 2 3 4 5 &l ...

  6. SLF4J 与Log4J

    为什么要使用SLF4J而不是Log4J 每一个Java程序员都知道日志对于任何一个Java应用程序,尤其是服务端程序是至关重要的,而很多程序员也已经熟悉各种不同的日志库如java.util.loggi ...

  7. 使用slf4j和log4j记录日志

    在项目中,记录日志是非常有必要的,在测试或生产环境,哪个功能点出了问题,往往要通过日志来分析定位,这里总结下在Spring+Spring MVC中记录日志的方法. 1.需要在pom.xml文件中引入s ...

  8. slf4j绑定log4j使用

    系列文章目录 文章目录 系列文章目录 前言 一.jar包支持 二.配置文件 三.代码测试 前言 slf4j译为简单日志门面,是日志框架的抽象,实现了日志框架一些通用的api,而log4j和logbac ...

  9. 日志冲突怎么解决?slf4j和log4j的区别?看完这一篇,这些都是小意思啦

    文章目录 一.你的烦恼 二.前置知识介绍 三.说一说让你头大的各种日志依赖 1.Slf4j的核心依赖 2.log4j的jar包依赖 3.slf4j对于log4j的桥接包的依赖 4.log4j对于slf ...

最新文章

  1. 不丢失精度的获取照片的Gps经纬度
  2. 有没有记录程序运行中所有的函数调用堆栈的工具?
  3. Fast Terrain Rendering Using Geometrical MipMappin
  4. Android edittext 属性inputtype详解
  5. SVN不是配置管理系统
  6. 数据结构与算法 / 概念
  7. ubuntu下Samba服务器的搭建
  8. unity3d学习笔记(一)-在一个GameObject上进行多个AudioSource的控制
  9. 1、Intellij IDEA中启动NameServer
  10. js 的函数参数的默认值问题
  11. 容灾服务器作用,存储容灾服务
  12. linuxmove命令_linux中mv命令使用详解
  13. Python---装饰器
  14. 在哪下载公司考勤刷卡特殊情况说明Excel模板
  15. Mac Mini换固态硬盘
  16. 【自用】图像算法、计算机视觉面试问题及答案1.0
  17. C语言项目-后宫选妃系统-第三天-终结
  18. android 背景 投影,Android ImageView投影
  19. 哈佛结构冯·诺依曼结构
  20. ftp工具,ftp工具专业版

热门文章

  1. 9行代码AC——L1-022 奇偶分家(10 分)(~解题报告~)
  2. ios 获取沙盒文件名_获取IOS各种沙盒路径的方法
  3. 单片机编程php,STC单片机内部FLASH读写程序(最新整理)
  4. 华为S5700系列交换机配置文件导出、导入
  5. 如何安装MiniGUI 3.0在Linux PC
  6. java与c/c++进行socket通信的一些问题
  7. 怎样用c语言写超市管理程序,C语言超市收银管理系统实现程序.doc
  8. java mysql乱码_41、java与mysql乱码的问题
  9. python统计学书籍推荐_一位90后统计学硕士的深悟:统计其实有门道!AI还能这样学!(精荐40本书+20视频资源...
  10. python时间格式化代码_Python datetime格式化代码