我在ActiveMQ 5.9.0中部署了一些Camel 2.12.2路由。 ActiveMQ log4j正在按预期工作,但在ActiveMQ中部署时,我无法获取我的camel应用程序的日志。我的Camel log4j.properties看起来像这样:
#
# The logging properties used
#
log4j.rootLogger=INFO, console, logger
# uncomment the following line to turn on Camel debugging
#log4j.logger.org.apache.camel=DEBUG
# Console appender
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%5p | %m%n
log4j.appender.console.threshold=INFO
# File appender
log4j.appender.logger=org.apache.log4j.RollingFileAppender
log4j.appender.logger.file=camel.log
log4j.appender.logger.maxFileSize=1024KB
log4j.appender.logger.maxBackupIndex=5
log4j.appender.logger.append=true
log4j.appender.logger.layout=org.apache.log4j.PatternLayout
log4j.appender.logger.layout.ConversionPattern=%d | %-5p | %m | %c | %t%n
我的camel项目正在使用带有SpringRouteBuilders的JavaDSL,以及使用maven camel插件运行应用程序并使用
运行maven camel:run
camel.log文件按生产时生成。
但是,在打包camel路由并将jar移动到ActiveMQ时,不再创建日志文件。我已经检查了slf4j,log4j和slf4j-log4j的jar,并且在ActiveMQ中的版本和我的pom.xml中的版本相同。
关于我在这里缺少什么的线索?
编辑:只是为了澄清我在这之后的情况。 由于我的camel路由有问题,我在ActiveMQ关闭的多个偶然事件中遇到过问题,但我没有在activemq日志中看到任何异常,这使得调试非常耗时。今天我遇到了这样一个问题,并意识到虽然日志中仍然没有错误的痕迹,但是当我做maven camel时我得到了一个堆栈跟踪:在我的项目上运行。一个简单的例子(实际上只是一个例子,我知道为什么会发生这种情况,但我想在ActiveMQ中运行时记录它!)
INFO | Apache Camel 2.12.2 (CamelContext: camel-1) is starting
INFO | StreamCaching is enabled on CamelContext: camel-1
INFO | JMX is enabled
INFO | Using EntityManagerFactory configured: org.springframework.orm.jpa.LocalEntityManagerFactoryBean@2127ee90
INFO | Using TransactionManager found in registry with id [transactionTemplate] org.springframework.orm.jpa.JpaTransactionManager@449f40f1
INFO | Apache Camel 2.12.2 (CamelContext: camel-1) is shutting down
INFO | Apache Camel 2.12.2 (CamelContext: camel-1) uptime 0.477 seconds
INFO | Apache Camel 2.12.2 (CamelContext: camel-1) is shutdown in 0.010 seconds
在ActiveMQ中部署时,这是我从Camel看到的最后一行
但是在运行maven camel时:跑步,我也看到了这个:
INFO | Apache Camel 2.12.2 stopping
[ERROR] *************************************
[ERROR] Error occurred while running main from: org.apache.camel.spring.Main
[ERROR]
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.camel.maven.RunMojo$1.run(RunMojo.java:486)
at java.lang.Thread.run(Thread.java:744)
Caused by: org.apache.camel.RuntimeCamelException: org.apache.camel.FailedToStartRouteException: Failed to start route XPriceChangeToRibRoute because of duplicate id detected: XPriceChangeToRibRoute. Please correct ids to be unique among all your routes.
at org.apache.camel.util.ObjectHelper.wrapRuntimeCamelException(ObjectHelper.java:1352)
...
所以,我真正想要的是,当在ActiveMQ中部署时,最后一部分也是可见的,如果可能的话,在我的activemq.log中,或者作为单独的日志,例如, camel.log。
答案 0 :(得分:1)
看看wrapper.log
。这就是应该找到STDOUT和STDERR的地方。尝试使用包装器启动ActiveMQ,例如对于MacOS,您可以使用:
apache-activemq-5.9.0/bin/macosx/activemq
或者,如果这不是一个选项,请将STDOUT / STDERR重定向到日志文件。