log4j 学习
使用
①程序需要打印日志,必须先声明一个Logger。
②调用Logger,使用不同的级别打印日志。
FATAL: 打印致命错误信息
ERROR: 打印错误信息
WARN: 打印警告信息
INFO: 打印普通信息
DEBUG: 打印调试信息
TRACE: 打印追踪信息
③在配置文件中编写Appender(决定日志输出到哪里及格式)。
④在配置文件中编写策略(哪些Logger使用什么Appender打印)。
配置文件
配置文件名称:
log4j.xml
log4j.properties
配置文件编写的内容: 参考PropertyConfigurator
示例
#配置Appender
#用OGNL语法解析配置文件
# Appender a = new org.apache.log4j.ConsoleAppender()
# 固定前缀 + 自定义的内容
log4j.appender.a=org.apache.log4j.ConsoleAppender
#a.setTarget("System.err")
log4j.appender.a.target=System.err
# a.setLayout(new org.apache.log4j.PatternLayout())
#默认样式: %m%n
# %m: 输出的内容消息
# %n: 换行
log4j.appender.a.layout=org.apache.log4j.PatternLayout
#输出的格式: 日期:yyyy-MM-dd HH:mm:ss空10格(全类名:方法名)==级别==>消息 换行
#%d{yyyy-MM-dd HH:mm:ss}%-10(%c:%M)==%p==>%m%n
log4j.appender.a.layout.conversionPattern=%d{yyyy-MM-dd HH:mm:ss} (%c:%M)==%p==>%m%n
#指定策略: 把logger和appender关联起来
# 固定前缀.Logger所在的全类名=打印日志的级别(输出指定级别以上的日志),Appender1,Appender2
log4j.logger.com.atguigu.log4j.demos.Log4jDemo1=trace,a
代码中使用:
public class Log4jDemo1 {
public static void main(String[] args) {
//声明一个Logger
Logger logger = Logger.getLogger(Log4jDemo1.class);
//级别打印日志
logger.trace("trace:haha");
logger.debug("debug:haha");
logger.info("info:haha");
logger.warn("warn:haha");
logger.error("error:haha");
logger.fatal("fatal:haha");
//做了修改
}
}
输出结果:
properties文件例2
log4j.properties文件:
#定义了一个ConsoleAppender 向控制台输出日志,红色打印,
log4j.appender.a=org.apache.log4j.ConsoleAppender
log4j.appender.a.target=System.err
log4j.appender.a.layout=org.apache.log4j.PatternLayout
# 年-月-日 时:分:秒 10个占位符 日志级别 (全类名:方法名) - 消息 换行
log4j.appender.a.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %10p (%c:%M) - %m%n
#定义了一个DailyRollingFileAppender 将日志写入到一个按照日期滚动的文件中。 当天的数据,会写入到app.log中,
# 过一天后,app.log会滚动,滚动的旧文件 以 app.log.昨天的日期 ,滚动的新文件还叫app.log
log4j.appender.b=org.apache.log4j.DailyRollingFileAppender
log4j.appender.b.file=/opt/module/applogs/app.log
log4j.appender.b.DatePattern='.'yyyy-MM-dd
log4j.appender.b.layout=org.apache.log4j.PatternLayout
log4j.appender.b.layout.ConversionPattern=%m%n
#代表指定哪个类的logger使用什么级别和appender进行日志输出 全类名可能需要修改
log4j.logger.com.atguigu.gmall_logger.controllers.LogController=info,b,a