Kafka中log4j简介

kafka的日志是使用log4j来记录的。log4j功能比较强大,配置灵活,被众多的java程序用来记录日志。

log4j主要用来指明日志等级,日志输出格式,日志输出到哪里。

其中,日志等级包括TRACE < DEBUG < INFO < WARN < ERROR < FATAL

日志格式[PatternLayout]说明如下:
%m 输出消息内容
%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL  
%r 输出自应用启动到输出该log信息耗费的毫秒数  
%c 输出所属的类目,通常就是所在类的全名  

%t 输出产生该日志事件的线程名  

%n 输出一个回车换行符,Windows平台为“rn”,Unix平台为“n”  

%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921 

%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java:10)


日志可以输出[Appender]到这些地方:
org.apache.log4j.ConsoleAppender(控制台)
org.apache.log4j.FileAppender(文件)
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)
org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)
org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)


下面对kafka的log4j配置做下相关解释
kafka.logs.dir=logs   //用来存放日志的目录,相对kafka主目录


log4j.rootLogger=INFO, stdout  //根logger, INFO是记录的日志级别, stdout表示使用下面的appender.stdout, 可以指定多个stdout 


log4j.appender.stdout=org.apache.log4j.ConsoleAppender             //输出到控制台
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout       
log4j.appender.stdout.layout.ConversionPattern=[%d] %p %m (%c)%n   //日志时间 日志级别 日志消息 日志类 换行符


log4j.appender.kafkaAppender=org.apache.log4j.DailyRollingFileAppender
log4j.appender.kafkaAppender.DatePattern='.'yyyy-MM-dd-HH
log4j.appender.kafkaAppender.File=${kafka.logs.dir}/server.log     //输出到logs/server.log
log4j.appender.kafkaAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.kafkaAppender.layout.ConversionPattern=[%d] %p %m (%c)%n


log4j.appender.stateChangeAppender=org.apache.log4j.DailyRollingFileAppender
log4j.appender.stateChangeAppender.DatePattern='.'yyyy-MM-dd-HH
log4j.appender.stateChangeAppender.File=${kafka.logs.dir}/state-change.log
log4j.appender.stateChangeAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.stateChangeAppender.layout.ConversionPattern=[%d] %p %m (%c)%n


log4j.appender.requestAppender=org.apache.log4j.DailyRollingFileAppender
log4j.appender.requestAppender.DatePattern='.'yyyy-MM-dd-HH
log4j.appender.requestAppender.File=${kafka.logs.dir}/kafka-request.log
log4j.appender.requestAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.requestAppender.layout.ConversionPattern=[%d] %p %m (%c)%n


log4j.appender.cleanerAppender=org.apache.log4j.DailyRollingFileAppender
log4j.appender.cleanerAppender.DatePattern='.'yyyy-MM-dd-HH
log4j.appender.cleanerAppender.File=${kafka.logs.dir}/log-cleaner.log
log4j.appender.cleanerAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.cleanerAppender.layout.ConversionPattern=[%d] %p %m (%c)%n


log4j.appender.controllerAppender=org.apache.log4j.DailyRollingFileAppender
log4j.appender.controllerAppender.DatePattern='.'yyyy-MM-dd-HH
log4j.appender.controllerAppender.File=${kafka.logs.dir}/controller.log
log4j.appender.controllerAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.controllerAppender.layout.ConversionPattern=[%d] %p %m (%c)%n


# Turn on all our debugging info
#log4j.logger.kafka.producer.async.DefaultEventHandler=DEBUG, kafkaAppender
#log4j.logger.kafka.client.ClientUtils=DEBUG, kafkaAppender
#log4j.logger.kafka.perf=DEBUG, kafkaAppender
#log4j.logger.kafka.perf.ProducerPerformance$ProducerThread=DEBUG, kafkaAppender
#log4j.logger.org.I0Itec.zkclient.ZkClient=DEBUG
log4j.logger.kafka=INFO, kafkaAppender   //INFO级别的日志,而且是kafka包下面的logger使用kafkaAppender


log4j.logger.kafka.network.RequestChannel$=WARN, requestAppender  //WARN级别的日志,而且kafka.network.RequestChannel$包下面的logger使用requestAppender
log4j.additivity.kafka.network.RequestChannel$=false              //additivity=true表示继承上一级的logger,即同时使用上一级的appender, false表示不输出到上一级的appender


#log4j.logger.kafka.network.Processor=TRACE, requestAppender
#log4j.logger.kafka.server.KafkaApis=TRACE, requestAppender
#log4j.additivity.kafka.server.KafkaApis=false
log4j.logger.kafka.request.logger=WARN, requestAppender
log4j.additivity.kafka.request.logger=false


log4j.logger.kafka.controller=TRACE, controllerAppender
log4j.additivity.kafka.controller=false


log4j.logger.kafka.log.LogCleaner=INFO, cleanerAppender
log4j.additivity.kafka.log.LogCleaner=false


log4j.logger.state.change.logger=TRACE, stateChangeAppender
log4j.additivity.state.change.logger=false




另外,以下2行只对RollingFileAppender有效,DailyRollingFileAppender不支持自动删除文件
log4j.appender.kafkaAppender.MaxBackupIndex=3  //最多保留3个日志文件
log4j.appender.kafkaAppender.MaxFileSize=10MB  //每个日志文件10MB
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值