基本概念
log4j三大件
logger、appender、layoutlog等级
ALL<TRACE<DEBUG<INFO<WARN<ERROR<FATAL<OFF
包及类的logger
log4j.logger.<PACKAGE_NAME>=<LEVEL>
log4j.logger.<PACKAGE_NAME>.<CLASS_NAME>=<LEVEL>, <LOGGER_NAME>
appender
ConsoleAppender
-
FileAppender
RollingFileAppender
RandomAccessFileAppender
-
Messaging
JMSAppender
SMTPAppender
-
DB
JDBCAppender
JPAAppender
NoSQLAppender
-
Remote
SocketAppender
SyslogAppender
layout
PatternLayout
HTMLLayout
XMLLayout
JSONLayout
SerializedLayout
rolling file设置保留文件大小(可以用在测试环境,避免log堆积占用磁盘空间
)
# Root logger option
log4j.rootLogger=INFO, file
# Direct log messages to a log file
log4j.appender.file=org.apache.log4j.RollingFileAppender
#Redirect to Tomcat logs folder #log4j.appender.file.File=${catalina.home}/logs/logging.log
log4j.appender.file.File=C:\\logigng.log
log4j.appender.file.MaxFileSize=10MB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
pattern layout参数说明
%d{ABSOLUTE}
打印时间; ABSOLUTE即使用HH:mm:ss,SSS格式%5p
打印日志级别(ERROR, DEBUG, INFO, etc.); 不满5个字符的以空格填充%t
打印线程名%c{1}
打印类及包名(只展示第一层);%M
打印方法名%L
打印行号%m
要打印的消息%n
换行%highlight{pattern}{style}
给符合指定格式的添加ANSI颜色
反模式
重复log,比如dao层的exception抛出去了,还log
log的时候还是用换行
log东西太多、太长
test当中使用log,应该使用assert更合适
异常没有log出来
使用###之类的不统一的格式
打印账户与密码等保密信息
最佳实践
打印时间戳、线程名、类名、流水号、用户id
使用rolling appender+maxFileSize和maxBackupIndex
打印exception记得打印堆栈
生产环境不要打印多余东西
使用参数化,避免字符串拼接
logback或log4j2去掉enabled判断
static final 修饰
log级别要确定好
打印上下文的值
不打印用户名密码等安全保密信息
注意系统磁盘空间+定期清理策略
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。