log4j
SLF4j作为日志门面,log4j2作为日志实现。
配置文件
### 设置###log4j.rootLogger = debug,stdout,D,E### 输出信息到控制抬 ###log4j.appender.stdout = org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.Target = System.outlog4j.appender.stdout.layout = org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n### 输出DEBUG 级别以上的日志到=/home/duqi/logs/debug.log ###log4j.appender.D = org.apache.log4j.DailyRollingFileAppender#输出到磁盘log4j.appender.D.File = /home/duqi/logs/debug.loglog4j.appender.D.Append = truelog4j.appender.D.Threshold = DEBUGlog4j.appender.D.layout = org.apache.log4j.PatternLayoutlog4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n### 输出ERROR 级别以上的日志到=/home/admin/logs/error.log ###log4j.appender.E = org.apache.log4j.DailyRollingFileAppenderlog4j.appender.E.File =/home/admin/logs/error.loglog4j.appender.E.Append = truelog4j.appender.E.Threshold = ERRORlog4j.appender.E.layout = org.apache.log4j.PatternLayoutlog4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
级别
log4j定义了8个级别的log(除去OFF和ALL 可以说分为6个级别),
ALL 最低等级的 用于打开所有日志记录
TRACE 很低的日志级别 一般不会使用
DEBUG 指出细粒度信息事件对调试应用程序是非常有帮助的 主要用于开发过程中打印一些运行信息
INFO 消息在粗粒度级别上突出强调应用程序的运行过程,打印一些你感兴趣的或者重要的信息 这个可以用于生产环境中输出程序运行的一些重要信息,但是不能滥用 避免打印过多的日志
WARN 表明会出现潜在错误的情形 有些信息不是错误信息 但是也要给程序员的一些提示
ERROR 指出虽然发生错误事件 但仍然不影响系统的继续运行,打印错误和异常信息 如果不想输出太多的日志 可以使用这个级别
FATAL 指出每个严重的错误事件将会导致应用程序的退出,这个级别比较高了 重大错误 这种级别你可以直接停止程序了
OFF 最高等级的,用于关闭所有日志记录
如果将log level设置在某一个级别上 那么比此级别优先级高的log都能打印出来
例如 如果设置优先级为WARN 那么OFF FATAL ERROR WARN 4个级别的log能正常输出
* 而INFO DEBUG TRACE ALL级别的log则会被忽略
slf4j
jar包
// 使用log4j,需要log4j.jarimport org.apache.log4j.Logger;Logger logger_log4j = Logger.getLogger(Test.class);logger_log4j.info("Hello World!");// 使用log4j2,需要log4j-api.jar、log4j-core.jarimport org.apache.logging.log4j.LogManager;import org.apache.logging.log4j.Logger;Logger logger_log4j2 = LogManager.getLogger(Test.class);logger_log4j2.info("Hello World!");// logback,需要logback-classic.jar、logback-core.jarimport ch.qos.logback.classic.Logger;import ch.qos.logback.classic.LoggerContext;Logger logger_logback = new LoggerContext().getLogger(Test.class);logger_logback.info("Hello World!");// java.until.logging,简称julimport java.util.logging.Logger;Logger logger_jul = Logger.getLogger("java.Test");
绑定log4j
<dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>1.7.12</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>1.7.30</version></dependency>
public class Log4jTest {private static final Logger logger = LoggerFactory.getLogger(Log4jTest.class);public static void main(String[] args) {logger.debug("debug");logger.info("info");logger.error("This is error message.");}}
配置文件 如上log4j
