コードでlog 4 j関連パラメータを構成する
log 4 jを使用してkafkaにログを書き込む際に問題が発生したのは、KafkaLog 4 jAppenderに異常が発生した後のログ処理が直接logを使用するとkafkaにログが書き込まれ、最終的にデッドサイクルになるため、以上のクラスで異常が発生した場合、ローカルファイルにログを書き込むには2つの方法が使用できます. log 4 j.propertiesでこのクラスの出力をローカル に個別に構成するは、コードにおいて を直接実現する.
本文は第2の方式を記録して、主な機能点はコード方式を使用してLog 4 jを配置するloggerの具体的なコードは以下の通りである.
関連するクラスはlog 4 jでslf 4 jではありません
下でそのまま使えます
効果は図のようだ
ログ4 jのプロファイルを添付
本文は第2の方式を記録して、主な機能点はコード方式を使用してLog 4 jを配置するloggerの具体的なコードは以下の通りである.
関連するクラスはlog 4 jでslf 4 jではありません
public class KafkaLog4jAppender extends AppenderSkeleton {
private static final Logger log = Logger.getLogger(KafkaLog4jAppender.class.getName());
// private static final Logger log = LoggerFactory.getLogger(KafkaLog4jAppender.class.getName());
}
@Override
public void activateOptions() {
//log4j ,
log.removeAllAppenders();// appender
log.setLevel(Level.WARN);//
log.setAdditivity(false);//
// Appender
DailyRollingFileAppender appender = new DailyRollingFileAppender();
PatternLayout layout = new PatternLayout();
String conversionPattern = "%d{yyyy-MM-dd HH:mm:ss,SSS} %5p %c{1}:%L ---- %m%n";
layout.setConversionPattern(conversionPattern);
appender.setLayout(layout);
// log
appender.setFile("d://temp//kafka.error");
appender.setDatePattern("'.'yyyy-MM-dd'.log'");
appender.setEncoding("UTF-8");
//
appender.activateOptions();
// Appender Logger
log.addAppender(appender);
}
下でそのまま使えます
producer.send(record, new Callback() {
@Override
public void onCompletion(RecordMetadata metadata, Exception exception) {
if (!Objects.isNull(exception)) {
log.warn("kafka , :" + message);
exception.printStackTrace();
}
}
});
効果は図のようだ
ログ4 jのプロファイルを添付
# LOG4J
log4j.rootCategory=info,stdout,kafka
#
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %5p %c{1}:%L - %m%n
#error
#log4j.logger.error=errorfile
# error
log4j.appender.errorfile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.errorfile.file=d:/temp/test.error.log
log4j.appender.errorfile.DatePattern='.'yyyy-MM-dd
log4j.appender.errorfile.Threshold=ERROR
log4j.appender.errorfile.layout=org.apache.log4j.PatternLayout
log4j.appender.errorfile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %5p %c{1}:%L - %m%n
## appender kafka
log4j.appender.kafka=com.xiang.demo.log4j.log4jdemo.config.KafkaLog4jAppender
log4j.appender.kafka.topic=kafka_log
#log4j.appender.kafka.acks=0
log4j.appender.kafka.brokerList=192.168.21.215:9092
#log4j.appender.kafka.compressionType=none
#
#log4j.appender.kafka.syncSend=false
log4j.appender.kafka.layout=org.apache.log4j.PatternLayout
log4j.appender.kafka.layout.ConversionPattern=%d [%-5p] [%t] - [%l] %m%n
## appender rabbitmq
#log4j.appender.rabbitmq=com.xiang.demo.log4j.log4jdemo.config.RabbitmqLog4jAppender
#log4j.appender.rabbitmq.host=
#log4j.appender.rabbitmq.username=
#log4j.appender.rabbitmq.password=
#log4j.appender.rabbitmq.virtualhost=/log
#log4j.appender.rabbitmq.qububname=log4j_log_rabbitmq
#log4j.appender.rabbitmq.layout=org.apache.log4j.PatternLayout
#log4j.appender.rabbitmq.layout.ConversionPattern=%d [%-5p] [%t] - [%l] %m%n
## kafka , kafka
# kafka
log4j.additivity.org.apache.kafka=false
log4j.logger.org.apache.kafka=warn,stdout,kfkerrfile
log4j.additivity.com.xiang.demo.log4j.log4jdemo.config.KafkaLog4jAppender=false
log4j.logger.com.xiang.demo.log4j.log4jdemo.config.KafkaLog4jAppender=warn,kfkapderrfile
log4j.appender.kfkapderrfile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.kfkapderrfile.file=d:/temp/kafka.appender.error
log4j.appender.kfkapderrfile.DatePattern='.'yyyy-MM-dd'.log'
log4j.appender.kfkapderrfile.layout=org.apache.log4j.PatternLayout
log4j.appender.kfkapderrfile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %5p %c{1}:%L ---- %m%n
log4j.appender.kfkerrfile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.kfkerrfile.file=d:/temp/kafka.error
log4j.appender.kfkerrfile.DatePattern='.'yyyy-MM-dd'.log'
log4j.appender.kfkerrfile.layout=org.apache.log4j.PatternLayout
log4j.appender.kfkerrfile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %5p %c{1}:%L ---- %m%n