Ceki Gülcü在Java日志领域世界知名。他创造了Log4J,这个最早的Java日志框架即便在JRE内置日志功能的竞争下仍然非常流行。随后他又着手实现SLF4J这个"简单的日志前端接口(Facade)"来替代Jakarta Commons-Logging。
要在工程里面使用logback需要以下jar文件:
maven依赖
ch.qos.logback logback-classic 1.1.7 ch.qos.logback logback-access 1.1.7
不需要再写logback-core和slf4j的依赖,因为logback-classic依赖这两个jar包。
注:
logback.xml(放在src/main/resource底下),不然找不到,即放在classpath最外层
这样是找不到的,会使用默认配置
这样就可以了,要在classpath最外层
1.logback首先会试着查找logback.groovy文件;2.当没有找到时,继续试着查找logback-test.xml文件;3.当没有找到时,继续试着查找logback.xml文件;4.如果仍然没有找到,则使用默认配置(打印到控制台)。创建LogbackDemo.java用于测试,代码如public class LogbackDemo { private static Logger logger = LoggerFactory.getLogger(LogbackDemo.class); public static void main(String[] args) { /** * 生产环境只能打印info,warn,error级别的日志, * 不能打印trace,debug级别的日志 */ logger.trace("<--trace-->"); logger.debug("<--debug-->"); logger.info("<--info-->"); logger.warn("<--warn-->"); logger.error("<--error-->"); String name = "winner_0715"; //打印变量,注意,{}绝不能省 logger.info("Hello,{}!", name); String message = "logback"; //禁止用String的"+"来输出字符串 //所以这一种不推荐 logger.info("Hello," + name + ",欢迎使用" + message); //推荐使用的方式 logger.info("Hello,{},欢迎使用{}", name, message); String[] fruits = {"apple", "banana"}; // 可以传入一个数组,结果为"Fruit: apple,banana" logger.info("Fruit:{},{}", fruits); }}
执行结果:
16:51:29.336 [main] DEBUG com.winner.log.LogbackDemo - <--debug-->16:51:29.339 [main] INFO com.winner.log.LogbackDemo - <--info-->16:51:29.339 [main] WARN com.winner.log.LogbackDemo - <--warn-->16:51:29.339 [main] ERROR com.winner.log.LogbackDemo - <--error-->16:51:29.339 [main] INFO com.winner.log.LogbackDemo - Hello,winner_0715!16:51:29.340 [main] INFO com.winner.log.LogbackDemo - Hello,winner_0715,欢迎使用logback16:51:29.340 [main] INFO com.winner.log.LogbackDemo - Hello,winner_0715,欢迎使用logback16:51:29.340 [main] INFO com.winner.log.LogbackDemo - Fruit:apple,banana
由此可见,日志是遵守一定格式的,但是我们并没有写配置文件,所以使用的是默认配置。
默认格式:时间(精确到毫秒)+ 线程名称 + log级别 + 类名 + log信息
从代码里可能只看得出来使用了slf4j,其实是使用了logback的jar包的
仅仅使用slf4j的jar包无法完成日志功能。