我正在运行一些在ActiveMQ 5.9.0内部署的Camel 2.12.2路由。
ActiveMQ log4j可以按预期工作,但是在ActiveMQ中部署时,我无法获取骆驼应用程序的日志。我的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


我的骆驼项目将JavaDSL与SpringRouteBuilders结合使用,并且在使用带有maven camel插件的应用程序并与

maven camel:run


camel.log文件将按照预期的方式生成。

但是,当打包骆驼路线并将罐子移到ActiveMQ时,不再创建日志文件。我检查了jars中的slf4j,log4j和slf4j-log4j,并且ActiveMQ中的版本与pom.xml中的版本相同。

关于我在这里缺少什么的任何线索?

编辑:只是为了澄清我在这里。
在骆驼路线出现问题的情况下,ActiveMQ处于关闭状态的原因不止一次,但是在activemq日志中却看不到任何异常,这使得调试非常耗时。今天,我遇到了一个问题,意识到尽管日志中仍然没有错误的踪影,但是在我的项目上执行maven camel:run时却得到了堆栈跟踪。一个简单的例子(真的只是一个例子,我知道为什么会这样,但是我也希望它在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中时,这是我从骆驼看到的最后一行

但是当运行maven camel:run时,我也看到了这一点:

 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。

最佳答案

看看wrapper.log。那就是应该找到STDOUT和STDERR的地方。尝试使用包装器启动ActiveMQ,例如对于MacOS,您可以使用:

apache-activemq-5.9.0/bin/macosx/activemq


或者,如果不是这样,则将STDOUT / STDERR重定向到日志文件。

10-06 16:08
查看更多