log4j.properties
Java的愛好者們隐圾,一定對log4j是特別的熟悉,基本大多數(shù)項目都會選擇log4j、slg4j來進行l(wèi)og記錄案疲。
但是對于log4j.properties的配置可能理解的不是特別熟悉祝沸,所有我準備整理一下矮烹,同時也提高一下自己對于log4j.properties的理解。
log4j配置文件的說明
rootLogger說明
rootLogger 指定log打印源奋隶,DEBUG為默認打印級別
在rootLogger里面指定的打印源擂送,在使用log4j打印log的時候,就會往所有rootLogger指定的打印源里面打印log信息唯欣。
- console 打印源為控制臺 對應log4j.appender.console
- file 打印源為文件 對應log4j.appender.file
- kafka 打印源為kafka 對應log4j.appender.kafka
log4j.logger.org.apache.kafka 打印源為kafka時指定log默認打印級別嘹吨,不設置不會打印log到kafka
log4j.rootLogger=DEBUG,console,file,kafka
log4j.logger.org.apache.kafka=WARN
打印源為控制臺
#輸出日志到控制臺
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.Threshold=all
log4j.appender.console.layout=org.apache.log4j.PatternLayout
#控制臺日志格式
log4j.appender.console.layout.ConversionPattern=%-d{yyyy-MM-dd HH\:mm\:ss} [%c\:%L]-[%p] %m%n
打印源為kafka
#輸出日志到kafka
log4j.appender.kafka=org.apache.kafka.log4jappender.KafkaLog4jAppender
#設置topic
log4j.appender.kafka.topic=pro-log
#設置kafka連接地址
log4j.appender.kafka.brokerList=localhost:9092
log4j.appender.kafka.compressionType=none
log4j.appender.kafka.requiredNumAcks=0
#設置是否異步
log4j.appender.kafka.syncSend=true
log4j.appender.kafka.level=DEBUG
log4j.appender.kafka.layout=org.apache.log4j.PatternLayout
log4j.appender.kafka.layout.ConversionPattern= %m
打印源為file
# appender file
log4j.appender.file=org.apache.log4j.RollingFileAppender
#設置log文件名
log4j.appender.file.file=logs/slf4j4json.log
#log是否追加
log4j.appender.file.append=true
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p %-60c %x - %m%n
#文件大小
log4j.appender.file.MaxFileSize=100MB
#文件保留個數(shù)
log4j.appender.file.MaxBackupIndex=5
單獨指定打印源
比如我只想往kafka中寫入log、或者我只想往文件中寫入log境氢,我們可以按下面的方式進行配置打印源蟀拷。
通過log4j.logger配置單個的打印源,不實用rootLogger配置萍聊。
# 單獨指定打印源為kafka
log4j.logger.kafka_log=INFO,kafka_log
log4j.logger.org.apache.kafka=INFO
log4j.appender.kafka_log=org.apache.kafka.log4jappender.KafkaLog4jAppender
log4j.appender.kafka_log.topic=pro-log
log4j.appender.kafka_log.brokerList=localhost:9092
log4j.appender.kafka_log.compressionType=none
log4j.appender.kafka_log.requiredNumAcks=0
log4j.appender.kafka_log.syncSend=false
log4j.appender.kafka_log.layout=org.apache.log4j.PatternLayout
log4j.appender.kafka_log.layout.ConversionPattern= %m
# 單獨指定打印源為file
log4j.logger.file_log=INFO,file_log
log4j.appender.file_log=org.apache.log4j.RollingFileAppender
log4j.appender.file_log.file=logs/slf4j4json.log
log4j.appender.file_log.append=true
log4j.appender.file_log.layout=org.apache.log4j.PatternLayout
log4j.appender.file_log.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p %-60c %x - %m%n
log4j.appender.file_log.MaxFileSize=100MB
log4j.appender.file_log.MaxBackupIndex=5
如上配置好之后问芬,使用LoggerFactory.getName("kafka_log")獲取kafka打印源;
LoggerFactory.getName("file_log")獲取file打印源
具體實現(xiàn)demo
拓展
json格式log打印
json格式log打印詳細介紹以及maven jar下載
討論
有問題歡迎大家指正寿桨,在下方進行評論討論此衅。