Log4j
Apache软件基金会的一个开源项目,方便控制程序日志的输出格式,保存日志内容
三种组件:
- logger 日志记录器
- Appender 输出源
- layout 布局
记录器记录级别(高—>低)
OFF、 FATAL、 ERROR、 WARN、 INFO 、DEBUG、 ALL
配置案例:
在 src 下配置 log4j.properties,记载器会自动寻找配置文件
# 配置记录器
log4j.rootLogger = DEBUG,myAppender
# 配置自定义记录器
log4j.logger.范围 = DEBUG,myAppender,file-Appender
# 配置自定义的附着器:myAppener
# 自定义附着器常用的三种方式:
# org.apche.log4j.ConsoleAppender
# org.apche.log4j.FileAppender
# org.apche.log4j.DailyRollingFileAppender
log4j.appender.myAppender = org.apche.log4j.ConsoleAppender
#自定义附着器2(自定义输出格式)
log4j.appender.myAppender2=org.apache.log4j.ConsoleAppender
#定义附着器3(定义日志文件)
log4j.appender.file-Appender3=org.apache.log4j.FileAppender
#定义日志文件路径
log4j.appender.file-Appender3.file=d:/prjMgr_log/prjMgr.log
log4j.appender.file-Appender3.layout=org.apache.log4j.PatternLayout
log4j.appender.file-Appender3.layout.conversionPattern=[%-5p] [%t] [%d] [%c] - %m%n
#定义附着器4(每天产生一个日志文件)
log4j.appender.file-day-Appender4=org.apache.log4j.DailyRollingFileAppender
#定义日志文件路径和每天一个日志文件的文件名前缀
log4j.appender.file-day-Appender4.file=d:/prjMgr_log/log_
#定义每天产生的日志文件名以及后缀名
log4j.appender.file-day-Appender4.datePattern=yyyy_MM_dd'.log'
#允许日志内容进行追加
log4j.appender.file-day-Appender4.append = true
#配置输出格式
log4j.appender.file-day-Appender4.layout=org.apache.log4j.PatternLayout
log4j.appender.file-day-Appender4.layout.conversionPattern=[%-5p] [%t] [%d] [%c] - %m%n
# 配置日志的输出格式(布局)
# 日志输出格式两种取值方式:
# org.apache.log4j.SimpleLayout(固定模式,只输出日志等级和日志内容)
# org.apache.log4j.PatternLayout(可指定日志内容输出模式)
log4j.appender.myAppender.layout = org.apache.log4j.SimpleLayout
#配置自定义格式的格式内容分布
# %d 日期和时间
# %m 代码中给定的消息内容
# %p 日志的等级,即DEBUG,INFO,WARN,ERROR,FATAL等
# %c 所在类的全名
# %t 产生该日志的线程名
# %n 回车换行符
log4j.appender.myAppender2.layout.conversionPattern=[%-5p] [%t] [%d] [%c] - %m%n
使用:
// 定义日志对象
private static final logger LOG = logger.getLogger(类.class)
// 测试需要打印的日志
日志打印规范:
- 进入控制器,参数打印
- Service 的入参打印
- Service Mapper准备的参数打印
- Service 操作玩数据库的结果打印,如果结果是 List 或者 Set等集合元素,需要打印个数
- 控制器(Servlet中)要返回给前端页面的结果,进行打印(如果是结合元素,打印个数)
操作玩数据库的结果打印,如果结果是 List 或者 Set等集合元素,需要打印个数 - 控制器(Servlet中)要返回给前端页面的结果,进行打印(如果是结合元素,打印个数)
- 异常 catch 中打印错误对象