slf4j 简单日志门面(Simple Logging Facade for Java)不是具体的日志解决方案,它只服务于各种各样的日志系统 ,是一种接口方案
在使用slf4j日志框架时 必须要有以下两个包 1. slf4j-api提供接口 只是一个日志标准并不提供实现 2.slf4j-log4j提供slf4j接口的具体实现 private final static Logger logger = LoggerFactory.getLogger(LogTest.class); 注:此时 Logger , LoggerFactory都来自slf4j-api接口,而在slf4j-logrj中具体实现 3.log4j包可以单独使用,也可以通过slf4j操作, log4j包原则上不是必须的,但是一般在使用slf4j框架是也加进去 private Logger logger = Logger.getLogger(Log4jTest.class); 注:当单独使用log4j包时,Logger来自log4j包 在使用slf4j日志框架时,Logger必须作为类的静态变量使用,即上面static不能省略。原因如下: 1 使用static修饰的属性是归这个类使用的 2 也就是说不论这个类实例化多少个,大家用的都是同一个static属性 3 log4j记录的是当前类的日志,不是每个实例的日志 4 所以只要有一个记录就可以了log4j日志级别 log4j定义了8个级别的log(除去OFF和ALL,可以说分为6个级别)因为OFF是全部关闭,ALL是全部放开 优先级从高到低依次为:OFF、FATAL、ERROR、WARN、INFO、DEBUG、TRACE、 ALL。 级别越高打起来越困难,只打等于或高于当前配置的日志级别的日志! A:off 最高等级,用于关闭所有日志记录。 B:fatal 指出每个严重的错误事件将会导致应用程序的退出。 C:error 指出虽然发生错误事件,但仍然不影响系统的继续运行。 D:warm 表明会出现潜在的错误情形。 E:info 一般和在粗粒度级别上,强调应用程序的运行全程。 F:debug 一般用于细粒度级别上,对调试应用程序非常有帮助。 G:all 最低等级,用于打开所有日志记录。
配置文件 log4j.properties 或log4j.xml等等 是log4j的核心 打出几种文件,何种级别,何种方式打出等等一些列配置。。。 log4j.properties解说: log4j.rootLogger = DEBUG,stdout,D,E # 配置日志信息输出目的地 log4j.appender.stdout = org.apache.log4j.ConsoleAppender # Target是输出目的地的目标 log4j.appender.stdout.Target = System.out # 指定日志消息的输出最低层次 log4j.appender.stdout.Threshold = INFO # 定义名为stdout的输出端的layout类型 log4j.appender.stdout.layout = org.apache.log4j.PatternLayout # 如果使用pattern布局就要指定的打印信息的具体格式ConversionPattern log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss} %l%m%n # 名字为D的对应日志处理 log4j.appender.D = org.apache.log4j.DailyRollingFileAppender # File是输出目的地的文件名 log4j.appender.D.File = log\\app_debug.log #绝对路径写法 E:\\IdeaProjects\\studyDemo\\log4j\\log\\app_debug.log #false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容 log4j.appender.D.Append = true log4j.appender.D.Threshold = DEBUG log4j.appender.D.layout = org.apache.log4j.TTCCLayout
#E配置类似D,级别为ERROR # 首行必须写这个log4j.rootLogger DEBUG这里代表能打日志的最细粒度,stdout是配置控制台输出日志,D,E 分别代表一种日志打印方式 因为控制台定义了日志级别为INfO,那么如果代码中用debug级别的日志 如:logger.debug("this is a debug log"); 将不会打印到控制台 D模式中级别为DEBUG,则代码中的debug,info,warn,error级别的日志都会打印(高于或等于DEBUG级别) D模式中级别为ERROR,则代码中的debug,info,warn将不会打印,只打印error级别的日志(只有error是,其他都比ERROR级别低) 实例见studyDemo/case/log4j