Java 无法找到附加程序
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/31918027/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Unable to locate appender
提问by Antara Roy
I am trying to migrate from log4j 1
to log4j 2
in a spring web application. When I build it I get the following error:
我正在尝试从Spring Web 应用程序迁移log4j 1
到log4j 2
。当我构建它时,我收到以下错误:
2015-08-10 16:26:36,222 DEBUG Built Plugin[name=AppenderRef] OK from factory method.
2015-08-10 16:26:36,222 DEBUG Building Plugin[name=root, class=org.apache.logging.log4j.core.config.LoggerConfig$RootLogger]. Searching for builder factory method...
2015-08-10 16:26:36,222 DEBUG No builder factory method found in class org.apache.logging.log4j.core.config.LoggerConfig$RootLogger. Going to try finding a factory method instead.
2015-08-10 16:26:36,223 DEBUG Still building Plugin[name=root, class=org.apache.logging.log4j.core.config.LoggerConfig$RootLogger]. Searching for factory method...
2015-08-10 16:26:36,223 DEBUG Found factory method [createLogger]: public static org.apache.logging.log4j.core.config.LoggerConfig org.apache.logging.log4j.core.config.LoggerConfig$RootLogger.createLogger(java.lang.String,org.apache.logging.log4j.Level,java.lang.String,org.apache.logging.log4j.core.config.AppenderRef[],org.apache.logging.log4j.core.config.Property[],org.apache.logging.log4j.core.config.Configuration,org.apache.logging.log4j.core.Filter).
2015-08-10 16:26:36,224 DEBUG Calling createLogger on class org.apache.logging.log4j.core.config.LoggerConfig$RootLogger for element Root with params(name="null", name="INFO", name="null", ={appFileAppender}, ={}, Configuration(/Applications/tomcat/webapps/ROOT/WEB-INF/classes/log4j2.xml), null)
2015-08-10 16:26:36,225 DEBUG Built Plugin[name=root] OK from factory method.
2015-08-10 16:26:36,225 DEBUG Building Plugin[name=loggers, class=org.apache.logging.log4j.core.config.LoggersPlugin]. Searching for builder factory method...
2015-08-10 16:26:36,227 DEBUG No builder factory method found in class org.apache.logging.log4j.core.config.LoggersPlugin. Going to try finding a factory method instead.
2015-08-10 16:26:36,228 DEBUG Still building Plugin[name=loggers, class=org.apache.logging.log4j.core.config.LoggersPlugin]. Searching for factory method...
2015-08-10 16:26:36,228 DEBUG Found factory method [createLoggers]: public static org.apache.logging.log4j.core.config.Loggers org.apache.logging.log4j.core.config.LoggersPlugin.createLoggers(org.apache.logging.log4j.core.config.LoggerConfig[]).
2015-08-10 16:26:36,229 DEBUG Calling createLoggers on class org.apache.logging.log4j.core.config.LoggersPlugin for element Loggers with params(={app, analyticsLogger, dpLogger, trackingPixelLogger, filteredLogsLogger, trackingOffersPurchasingLogger, ifbLogger, trackingOffersUdidLogger, trackingOffersHeadersLogger, apLogger, s3AdminLogger, bookPackLogger, accumulatorLogger, appDownloadLogger, botDetectionLogger, fourGLogger, urlShortenerLogger, TrackingAllLogger, otiHeadersLogger, postpaidErrorTrackingLogger, root})
2015-08-10 16:26:36,230 DEBUG Built Plugin[name=loggers] OK from factory method.
2015-08-10 16:26:36,235 ERROR Unable to locate appender appFileAppender for logger
2015-08-10 16:26:36,237 ERROR No appender named fourGFileAppender was configured
Following jars are added to classpath:
以下 jars 被添加到类路径:
- log4j-slf4j-impl-2.3.jar
- log4j-core-2.3.jar
- log4j-api-2.3.jar
- slf4j-api-1.7.12.jar
- commons-logging-1.1.1.jar
- apache-log4j-extras-1.1.jar
- log4j-slf4j-impl-2.3.jar
- log4j-core-2.3.jar
- log4j-api-2.3.jar
- slf4j-api-1.7.12.jar
- commons-logging-1.1.1.jar
- apache-log4j-extras-1.1.jar
And my log4j2.xml
looks like:
我的log4j2.xml
样子:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="trace">
<Appenders>
<RollingFile name="appFileAppender" fileName="/tmp/portal-fe.log"
filePattern="/tmp/portal-fe.%d{yyyy-MM-dd}.log.gz">
<PatternLayout
pattern="%d{yyyy-MM-dd HH:mm:ss} [%p] | [%t] [%X{requestId}] [%X{x_msisdn}] [%X{x_rat}] [%X{x_forwarded_for}] [%X{circle}] [%C{1}:%L] %m%n"/>
</RollingFile>
<RollingFile name="analyticsFileAppender" fileName="/tmp/ops_bc_log"
datePattern="'-'yyyyMMdd">
<PatternLayout
pattern="%d{yyyy/MM/dd HH:mm:ss} %m%n"/>
</RollingFile>
<Async name="ASYNC">
<AppenderRef ref="appFileAppender"/>
</Async>
<Async name="ASYNC_2">
<AppenderRef ref="analyticsFileAppender"/>
</Async>
</Appenders>
<Loggers>
<Logger name="app" level="debug">
<AppenderRef ref="ASYNC"/>
</Logger>
<Logger name="analyticsLogger" level="info">
<AppenderRef ref="ASYNC_2"/>
</Logger>
<Root level="info">
<AppenderRef ref="appFileAppender"/>
</Root>
</Loggers>
</Configuration>
采纳答案by Remko Popma
Your RollingFile configuration needs to specify what triggers a rollover. You do this by adding a <Policy>
element. See the RollingFile manual entryfor details.
您的 RollingFile 配置需要指定触发翻转的内容。您可以通过添加<Policy>
元素来完成此操作。有关详细信息,请参阅RollingFile 手册条目。
I believe adding this snippet before the closing </RollingFile>
tag should fix the issue:
我相信在结束</RollingFile>
标记之前添加这个片段应该可以解决这个问题:
<Policies>
<TimeBasedTriggeringPolicy />
</Policies>
For the analyticsFileAppender RollingFile appender you configured a datePattern
where you meant to say filePattern
. Below is the fixed config snippet.
对于 analyticsFileAppender RollingFile appender,你配置了一个datePattern
你想说的地方filePattern
。下面是固定的配置片段。
<RollingFile name="analyticsFileAppender" fileName="/tmp/ops_bc_log"
filePattern="'-'yyyyMMdd">
<PatternLayout pattern="%d{yyyy/MM/dd HH:mm:ss} %m%n"/>
<Policies>
<TimeBasedTriggeringPolicy />
</Policies>
</RollingFile>
回答by Ankur Mahajan
First, remove the Async appender, and point the appender-ref of the AsyncLogger to the ProcessorLoggingFile directly. Second, you must add includeLocation="true" on the AsyncLogger.
首先,移除Async appender,将AsyncLogger的appender-ref直接指向ProcessorLoggingFile。其次,您必须在 AsyncLogger 上添加 includeLocation="true"。
Having an async appender in addition to an async logger does not help and in this case might be what prevents the includeLocation from working correctly.
除了异步记录器之外,还有一个异步 appender 并没有帮助,在这种情况下,可能会阻止 includeLocation 正常工作。
EDIT:CHECK THISquestion for more help.
编辑:检查这个问题以获得更多帮助。