Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用log4j 1.2.17时堆栈溢出_Java_Maven_Log4j_Stack Overflow - Fatal编程技术网

Java 使用log4j 1.2.17时堆栈溢出

Java 使用log4j 1.2.17时堆栈溢出,java,maven,log4j,stack-overflow,Java,Maven,Log4j,Stack Overflow,在我的项目中使用log4j1.2.17时,我面临“StackOverflow”错误 下面是错误的堆栈跟踪 java.lang.StackOverflowError at org.apache.log4j.PatternLayout.format(PatternLayout.java:506) at org.apache.log4j.WriterAppender.subAppend(WriterAppender.java:310) at or

在我的项目中使用log4j1.2.17时,我面临“StackOverflow”错误

下面是错误的堆栈跟踪

    java.lang.StackOverflowError
        at org.apache.log4j.PatternLayout.format(PatternLayout.java:506)
        at org.apache.log4j.WriterAppender.subAppend(WriterAppender.java:310)
        at org.apache.log4j.WriterAppender.append(WriterAppender.java:162)
        at org.apache.log4j.AppenderSkeleton.doAppend(AppenderSkeleton.java:251)
        at org.apache.log4j.helpers.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:66)
        at org.apache.log4j.Category.callAppenders(Category.java:206)
        at org.apache.log4j.Category.forcedLog(Category.java:391)
        at org.apache.log4j.Category.debug(Category.java:260)
        at com.java.oauth.client.JavaOauthWithCertificate.ReadRequiredConfigurationsToObtainToken(JavaOauthWithCertificate.java:42)
        at com.java.oauth.client.JavaOauthWithCertificate.getTokenByCertificate(JavaOauthWithCertificate.java:112)
        at com.test.sre.service.ServiceWrapperImpl.logMessage(ServiceWrapperImpl.java:54)
        at com.test.sre.logging.SREWebServiceAppender.append(SREWebServiceAppender.java:59)
        at org.apache.log4j.AppenderSkeleton.doAppend(AppenderSkeleton.java:251)
        at org.apache.log4j.helpers.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:66)
        at org.apache.log4j.Category.callAppenders(Category.java:206)
        at org.apache.log4j.Category.forcedLog(Category.java:391)
        at org.apache.log4j.Category.debug(Category.java:260)
        at com.java.oauth.client.JavaOauthWithCertificate.ReadRequiredConfigurationsToObtainToken(JavaOauthWithCertificate.java:42)
        at com.java.oauth.client.JavaOauthWithCertificate.getTokenByCertificate(JavaOauthWithCertificate.java:112)
第42行ReadRequiredConfigurationsToobt中的代码部分为

logger.debug(******验证已启动********)

SRE web服务appender正在将日志写入数据库。这将调用扩展的AppenderSkleton类来实现自定义appender。当代码运行时,执行在这一点被卡住,并在一定时间后抛出错误

我已经尝试增加JVM的堆栈大小和堆大小,但还并没有成功

下面是属性文件中设置的log4j配置

log4j.rootLogger=DEBUG, A1, A2, A3

# service will ignore this output, but somebody manually running might be interested
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=[%d] %-5p %c %x - %m%n

# also log to a file - again probably not monitored in production but might be handy for debugging
log4j.appender.A2=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A2.File=C:\\EnergyTrading\\logs\\debug.log
log4j.appender.A2.DatePattern='.'yyyy-MM-dd
log4j.appender.A2.layout=org.apache.log4j.PatternLayout
log4j.appender.A2.layout.ConversionPattern=[%d] %-5p %c %x - %m%n

#web service appender - directs log messages to 
log4j.appender.A3=com.test.sre.logging.SREWebServiceAppender

Any help on this error would be greatly helpful.

看起来您的appender
SREWebServiceAppender
正在使用
JavaOauthWithCertificate
,它正在使用log4j进行日志记录。这样,日志记录将导致更多日志记录,并始终以堆栈溢出结束

您应该更新日志记录配置。您可以选择(从最明智的到不太明智的):

  • 不要将调试消息记录在appender
    log4j.appender.A3=com.test.sre.logging.sreweberserviceappender
    ()
  • 停止在类
    com.java.oauth.client.JavaOauthWithCertificate.ReadRequiredConfigurationsToobtToToToken中记录调试消息(我不知道这些是什么类别)
  • 停止在根目录中记录调试消息
  • 删除appender
    log4j.appender.A3=com.test.sre.logging.sreweberserviceappender