- 常用的日志框架
Log4j:
Log4j2:
SLF4J:日志输出接口,底层依赖于其它的日志框架
Logback:
Apache Commons Logging:和slf4j类似,是日志输出接口,依赖第三方日志框架
java.util.logging.Logger:JDK自带的日志系统
一般项目中使用slf4j作为日志抽象,这样以后系统替换日志框架的话,只需要替换jar,不需要修改代码。
- slf4j
slf4j仅仅是一个为Java程序提供日志输出的统一接口,并不是一个具体的日志实现方案,就比如JDBC一样,只是一种规则而已,所以单独的slf4j是不能工作的,
必须搭配其他具体的日志实现方案,比如log4j或者log4j2
- slf4j+log4j
需要的jar:log4j-xxx.jar slf4j-api-xxx.jar slf4j-log4j12-xx.jar(桥接包)
log4j的日志输出级别:
TRACE > DEBUG > INFO > WARN > ERROR > FATAL
但是注意slf4j没有FATAL等级
package com.basic.work.log; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * * Slf4j+log4j 组合 * 需要的jar:log4j-xxx.jar slf4j-api-xxx.jar slf4j-log4j12-xx.jar * * slf4j仅仅是一个为Java程序提供日志输出的统一接口,并不是一个具体的日志实现方案, * 就比如JDBC一样,只是一种规则而已,所以单独的slf4j是不能工作的, * 必须搭配其他具体的日志实现方案,比如log4j或者log4j2 * * 日志的输出级别: * TRACE > DEBUG > INFO > WARN > ERROR > FATAL * * 注意slf4j没有FATAL等级 * @author chenzhubing * */ public class Log4j { private static final Logger log = LoggerFactory.getLogger(Log4j.class); public static void main(String[] args) { log.info("hekk"); log.warn("warn"); log.error("sssss"); log.trace("trace"); log.debug("debug"); } }
-
log4j.properties
log4j.rootLogger=TRACE, xxx,yyy,zzz,ccc #xxx 代表控制台 log4j.appender.xxx=org.apache.log4j.ConsoleAppender #PatternLayout 灵活地指定布局模式 SimpleLayout 日志信息的级别和信息字符串 log4j.appender.xxx.layout=org.apache.log4j.PatternLayout log4j.appender.xxx.layout.ConversionPattern=(%r ms) [%t] %-5p: %c#%M %x: %m%n #yyy 代表文件 log4j.appender.yyy=org.apache.log4j.FileAppender log4j.appender.yyy.layout=org.apache.log4j.PatternLayout log4j.appender.yyy.layout.ConversionPattern=(%r ms) [%t] %-5p: %c#%M %x: %m%n log4j.appender.yyy.File = f:/FileAppender.log #zzz 代表DailyRollingFileAppender 每天创建一个文件 log4j.appender.zzz=org.apache.log4j.DailyRollingFileAppender log4j.appender.zzz.layout=org.apache.log4j.PatternLayout log4j.appender.zzz.layout.ConversionPattern=(%r ms) [%t] %-5p: %c#%M %x: %m%n log4j.appender.zzz.File = f:/log4j-DailyRollingFileAppender.log # 默认是true 追加到文件中;false 覆盖原文件 log4j.appender.zzz.Append = false #ccc 代表RollingFileAppender 文件到达指定大小,产生一个新的文件 log4j.appender.ccc=org.apache.log4j.RollingFileAppender log4j.appender.ccc.layout=org.apache.log4j.PatternLayout log4j.appender.ccc.layout.ConversionPattern=(%r ms) [%t] %-5p: %c#%M %x: %m%n log4j.appender.ccc.File = f:/log4j-RollingFileAppender.log #指定文件的最大尺寸,超过最大尺寸就会生成一个新的文件【文件尺寸最大对应发生时间最久的,文件尺寸最小的对应最近时间发生的】 log4j.appender.ccc.MaxFileSize = 50kB #最多保留50个最近的发生的文件 log4j.appender.ccc.MaxBackupIndex = 50