SLF4J的全称是Simple Logging Facade for Java,即简单日志门面。

SLF4J并不是具体的日志框架,而是作为一个简单门面服务于各类日志框架,如java.util.logging, logback和log4j。

SLF4J支持{}作为占位符,等价于C语言中的%s,而不必再进行字符串的拼接,效率有显著的提。

1.slf4j使用

引入包 slf4j-api-1.6.2.jar

import org.slf4j.Logger;
import org.slf4j.LoggerFactory; public class App{ private static Logger logger = LoggerFactory.getLogger(App.class); public static void main(String[] args) { logger.info("info hello world");
logger.error("error hello world");
logger.debug("debug hello world");
//输出参数比较多时可以使用占位符 (推荐此方法,不要使用字符串拼接)
logger.debug("Processing trade with id: {} and symbol : {} ", id, symbol);
}
}

2.与log4j集成

依赖包:slf4j-api-1.6.2.jar,slf4j-log4j12-1.6.2.jar ,log4j-1.2.17.jar
常见问题,配置log4j后,有日志文件,但日志文件内容为空。
原因:
a) slf4j 可能有多个绑定实现包,如slf4j-log4j12 与slf4j-jdk14 同时存在,删除一个包即可
b) 确认 sl4j-api与slf4j-log4j12版本是否一至,二者版本要保持一至才可以
c) 指定日志文件具体位置 log4j.appender.D.File=d:/debug.log

3.在src目录中创建log4j.properties (如果是maven项目,在src/main/resources目录中创建log4j.properties)

log4j.properties

### 设置###
log4j.rootLogger=DEBUG,stdout,D,E,I
### 输出信息到控制抬 ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n
### 输出DEBUG 级别以上的日志文件设置 ###
log4j.appender.D=org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File=debug.log
log4j.appender.D.Append=false
log4j.appender.D.layout=org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
### 输出ERROR 级别以上的日志文件设置 ###
log4j.appender.E=org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File=error.log
log4j.appender.E.Append=true
log4j.appender.E.Threshold=ERROR
log4j.appender.E.layout=org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
### 输出INFO 级别以上的日志文件设置 ###
log4j.appender.I=org.apache.log4j.RollingFileAppender
log4j.appender.I.File=info.log
log4j.appender.I.Append=true
log4j.appender.I.Threshold=INFO
log4j.appender.File.MaxFileSize=100KB
log4j.appender.I.MaxBackupIndex=15
log4j.appender.I.layout=org.apache.log4j.PatternLayout
log4j.appender.I.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n

Java日志使用slf4j 配置log4j后,有日志文件 但日志文件内容为空的更多相关文章

  1. java日志框架slf4j与log4j

    日志记录自然是非常重要的,但恐怕能记住slf4j与log4j等日志框架配置的人就很少了,这个东西不难,只是配置好后很少会去动它,开发新项目一般也是从其他项目拷贝,或者参照文档 废话不多说,先说log4 ...

  2. Java日志之Slf4j,Log4J,logback原理总结

    几乎任何应用,一定是需要日志的. 那么,面对种类繁多的日志框架和配置,我们该何去何从? 1.前奏:我是在研究mybatis源码的过程中才意识到需要搞明白日志原理这回事,因为mybatis(和一些其他开 ...

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

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

  4. java日志-纯Java配置使用slf4j配置log4j(转)

    工程目录如下 代码里面用的是slf4j,但是想要用log4j来管理日志,就得添加slf4j本来的jar,然后添加log4j和slf4j箱关联的jar即可. 如果是maven项目的话添加下面的依赖即可 ...

  5. 纯Java配置使用slf4j配置log4j

    工程目录如下 代码里面用的是slf4j,但是想要用log4j来管理日志,就得添加slf4j本来的jar,然后添加log4j和slf4j箱关联的jar即可. 如果是maven项目的话添加下面的依赖即可 ...

  6. 从0开始学习ssh之日志工具与配置log4j

    添加slf4j-api-1.6.1,slf4j-log4j12-1.6.1,log4j-1.2.15三个jar包到lib文件夹下就可以使用log4j日志文件.具体配置在log4j.properties ...

  7. Spring boot 配置tomcat后 控制台不打印SQL日志

    在pom.xml中配置tomcat启动处加上: <dependency> <groupId>org.springframework.boot</groupId> & ...

  8. 使用koa-body中间件后DELETE请求中ctx.request.body内容为空

    gitbook浏览此随笔 出现场景 在使用koa-body 做文件上传的时候,发现使用DELETE请求时,request.body中的内容为空对象{} app.js //code... const K ...

  9. Java日志框架Slf4j+Log4j入门

    一.日志系统介绍 slf4j,即简单日志门面(Simple Logging Facade for Java),不是具体的日志解决方案,它只服务于各种各样的日志系统.简答的讲就是slf4j是一系列的日志 ...

随机推荐

  1. [git]git的基本原理|git branch|git

    继续写一篇git的文章,介绍下git的历史和基本原理. 介绍下git的历史,据砖家考究,遥想当年,linux的创始人,牛人李纳斯,开发linux用的版本控制工具BitKeeper,出于公益或友好, 是 ...

  2. 工作中常用到的linux命令总结

    linux系统ubantu debian系统下载文件:wget https://github.com/buger/goreplay/releases/download/v1.0.0/gor_1.0.0 ...

  3. HTML5 入门基础

    HTML5概述HTML5於2004年被WHATWG(网页超文本技术工作小组)提出,於2007年被W3C接纳.在2008年1月22日,第一份正式草案已公布.WHATWG表示该规范是目前正在进行的工作,仍 ...

  4. js倒计时功能中newData().getTime()在iOS下会报错,显示 nan

    最近在做移动端项目 ,有个设置开始时间和结束时间,然后倒计时 这个活动还有几天.在安卓上能正确转换时间,但在iOS上不能显示,为NaN-NaN1-NaN  Invalid Date, 就好比new D ...

  5. vue开发移动端总结

    1.app.vue组件中,外层只能有一个div块,不能多个并列在一起. 正确: 错误: 2.main.js文件 3. app.vue文件 4. stroe.js 文件 5. router.js

  6. koa2基础

    1.安装脚手架 npm install -g koa-generator 2.创建目录 koa2 -e koa2-learn 3.cd koa2-learn 4.npm install 5.SET D ...

  7. 【JavaScript】 命名空间污染解决

    闭包解决命名空间污染问题 var init = (function () { var name = "zhangsan", age = 12, sex = "male&q ...

  8. pycharm2017版本永久激活

    亲测有效,为了以后方便查看,就复制粘贴了一下 声明:转自https://blog.csdn.net/qq_34173491/article/details/81157519 目前比较好用的Python ...

  9. linux运维、架构之路-Hadoop完全分布式集群搭建

    一.介绍 Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS.HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件 ...

  10. node创建项目,要ejs模板引擎,不要jade怎么办?

    创建项目时:express ejs blog,生成的是.jade文件怎么办?我想要的是ejs的呀 上述语句不仅名字不对,生成文件的格式也不是我想要的. 不妨试试:express -e blog 这下就 ...