1. 程式人生 > >應用無法啟動,並且不報錯的總結log4j的問題

應用無法啟動,並且不報錯的總結log4j的問題

應用啟動不起來,並且不報錯。沒有任何徵兆與線索。經過排查,是log4j的問題,log4j配置如下。

log4j.rootLogger = INFO,console,logstashlog4j.logger.com.atc=INFOlog4j.appender.console=org.apache.log4j.ConsoleAppenderlog4j.appender.console.target=System.outlog4j.appender.console.layout=org.apache.log4j.PatternLayoutlog4j.appender.console.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %p [%c:%L] - %m%nlog4j.appender
.f = org.apache.log4j.DailyRollingFileAppenderlog4j.appender.f.File = /data/logs/startup/startup.loglog4j.appender.f.Append = truelog4j.appender.f.layout = org.apache.log4j.PatternLayoutlog4j.appender.f.layout.ConversionPattern =%d{yyyy-MM-dd HH:mm:ss,SSS} %p [%c:%L] - %m%nlog4j.appender.logstash=org.apache
.log4j.net.SocketAppenderlog4j.appender.logstash.Port=${port}log4j.appender.logstash.RemoteHost=${host}log4j.appender.logstash.layout=org.apache.log4j.PatternLayoutlog4j.appender.logstash.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} [%-5p] [%c:%L] %m%nlog4j.appender.logstash.ReconnectionDelay
=10000

改成以下就解決了問題:

log4j.rootLogger = INFO,console,flog4j.appender.console=org.apache.log4j.ConsoleAppenderlog4j.appender.console.target=System.outlog4j.appender.console.layout=org.apache.log4j.PatternLayoutlog4j.appender.console.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %p [%c:%L] - %m%nlog4j.appender.f = org.apache.log4j.DailyRollingFileAppenderlog4j.appender.f.File = /home/root1/logs/startup/startup.loglog4j.appender.f.Append = truelog4j.appender.f.layout = org.apache.log4j.PatternLayoutlog4j.appender.f.layout.ConversionPattern =%d{yyyy-MM-dd HH:mm:ss,SSS} %p [%c:%L] - %m%nlog4j.logger.com.atc.daizhang.dao.TaskMasterMapper=INFOlog4j.logger.com.atc.daizhang.dao.TaskBatchMapper=INFOlog4j.logger.com.atc=INFO

沒錯,把logstash這段去掉就可以了。

分析原因,是logstash所在機器耗盡,導致ELK掛掉,進而導致本篇問題的發生。

P.S.

log4j不建議大家使用,N年不更新了,建議使用logback、log4j2。因為專案的遺留問題,不得不使用log4j。