log4j cassandra appender异常

btqmn9zl  于 2021-06-14  发布在  Cassandra
关注(0)|答案(1)|浏览(352)

我想用cassandra appender bu向cassandra db发送日志消息ı 下面提到了一个错误,
我已经在docker上创建了独立的cassandra,并在本地主机9042上使用demo keyspace和logs表

  1. Exception in thread "main" java.lang.NoSuchMethodError: org.apache.logging.log4j.core.appender.db.AbstractDatabaseManager$AbstractFactoryData.<init>(I)V
  2. at org.apache.logging.log4j.nosql.appender.cassandra.CassandraManager$FactoryData.<init>(CassandraManager.java:193)
  3. at org.apache.logging.log4j.nosql.appender.cassandra.CassandraManager$FactoryData.<init>(CassandraManager.java:176)
  4. at org.apache.logging.log4j.nosql.appender.cassandra.CassandraManager.getManager(CassandraManager.java:127)
  5. at org.apache.logging.log4j.nosql.appender.cassandra.CassandraAppender$Builder.build(CassandraAppender.java:177)
  6. at org.apache.logging.log4j.nosql.appender.cassandra.CassandraAppender$Builder.build(CassandraAppender.java:52)
  7. at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.build(PluginBuilder.java:122)
  8. at org.apache.logging.log4j.core.config.AbstractConfiguration.createPluginObject(AbstractConfiguration.java:964)
  9. at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:904)
  10. at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:896)
  11. at org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration.java:514)
  12. at org.apache.logging.log4j.core.config.AbstractConfiguration.initialize(AbstractConfiguration.java:238)
  13. at org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:250)
  14. at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:548)
  15. at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:620)
  16. at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:637)
  17. at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:231)
  18. at org.apache.logging.log4j.core.async.AsyncLoggerContext.start(AsyncLoggerContext.java:76)
  19. at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:153)
  20. at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:45)
  21. at org.apache.logging.log4j.LogManager.getContext(LogManager.java:194)
  22. at org.apache.commons.logging.LogAdapter$Log4jLog.<clinit>(LogAdapter.java:155)
  23. at org.apache.commons.logging.LogAdapter$Log4jAdapter.createLog(LogAdapter.java:122)

依赖关系文件包括

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-log4j2</artifactId>
  4. <version>2.1.5.RELEASE</version>
  5. </dependency>
  6. <dependency>
  7. <groupId>com.datastax.cassandra</groupId>
  8. <artifactId>cassandra-driver-core</artifactId>
  9. <version>3.6.0</version>
  10. </dependency>
  11. <dependency>
  12. <groupId>org.apache.logging.log4j</groupId>
  13. <artifactId>log4j-nosql</artifactId>
  14. <version>2.8.1</version>
  15. </dependency>

附录conf如下所述,

  1. <Cassandra name="Cassandra" clusterName="MyCluster" keyspace="demo" table="log" bufferSize="10" batched="true">
  2. <SocketAddress host="localhost" port="9042" />
  3. <ColumnMapping name="id" pattern="%uuid{TIME}" type="java.util.UUID" />
  4. <ColumnMapping name="timeid" literal="now()" />
  5. <ColumnMapping name="message" pattern="%message" />
  6. <ColumnMapping name="level" pattern="%level" />
  7. <ColumnMapping name="marker" pattern="%marker" />
  8. <ColumnMapping name="logger" pattern="%logger" />
  9. <ColumnMapping name="timestamp" type="java.util.Date" />
  10. <ColumnMapping name="mdc" type="org.apache.logging.log4j.spi.ThreadContextMap" />
  11. <ColumnMapping name="ndc" type="org.apache.logging.log4j.spi.ThreadContextStack" />
  12. </Cassandra>
  13. </Appenders>

依赖树log4j2相关分支如下所述

  1. +- org.springframework.boot:spring-boot-starter-log4j2:jar:2.1.5.RELEASE:compile
  2. [INFO] | | +- org.apache.logging.log4j:log4j-slf4j-impl:jar:2.11.2:compile
  3. [INFO] | | | \- org.apache.logging.log4j:log4j-api:jar:2.11.2:compile
  4. [INFO] | | +- org.apache.logging.log4j:log4j-core:jar:2.11.2:compile
  5. [INFO] | | +- org.apache.logging.log4j:log4j-jul:jar:2.11.2:compile
  6. [INFO] | | \- org.slf4j:jul-to-slf4j:jar:1.7.26:compile
  7. +- com.lmax:disruptor:jar:3.3.6:compile
  8. [INFO] | +- com.datastax.cassandra:cassandra-driver-core:jar:3.6.0:compile
  9. [INFO] | | +- io.netty:netty-handler:jar:4.1.36.Final:compile
  10. [INFO] | | | +- io.netty:netty-common:jar:4.1.36.Final:compile
  11. [INFO] | | | +- io.netty:netty-buffer:jar:4.1.36.Final:compile
  12. [INFO] | | | +- io.netty:netty-transport:jar:4.1.36.Final:compile
  13. [INFO] | | | | \- io.netty:netty-resolver:jar:4.1.36.Final:compile
  14. [INFO] | | | \- io.netty:netty-codec:jar:4.1.36.Final:compile
  15. [INFO] | | +- com.google.guava:guava:jar:19.0:compile
  16. [INFO] | | +- io.dropwizard.metrics:metrics-core:jar:4.0.5:compile
  17. [INFO] | | +- com.github.jnr:jnr-ffi:jar:2.1.7:compile
  18. [INFO] | | | +- com.github.jnr:jffi:jar:1.2.16:compile
  19. [INFO] | | | +- com.github.jnr:jffi:jar:native:1.2.16:runtime
  20. [INFO] | | | +- org.ow2.asm:asm:jar:5.0.3:compile
  21. [INFO] | | | +- org.ow2.asm:asm-commons:jar:5.0.3:compile
  22. [INFO] | | | +- org.ow2.asm:asm-analysis:jar:5.0.3:compile
  23. [INFO] | | | +- org.ow2.asm:asm-tree:jar:5.0.3:compile
  24. [INFO] | | | +- org.ow2.asm:asm-util:jar:5.0.3:compile
  25. [INFO] | | | \- com.github.jnr:jnr-x86asm:jar:1.0.2:compile
  26. [INFO] | | \- com.github.jnr:jnr-posix:jar:3.0.44:compile
  27. [INFO] | | \- com.github.jnr:jnr-constants:jar:0.9.9:compile
  28. [INFO] | \- org.apache.logging.log4j:log4j-nosql:jar:2.8.1:compile

我已经用log4j cassandra更改了log4j nosql依赖关系,并且为cassandra驱动程序核心添加了排除项,用于度量核心下面提到的异常更改

  1. <dependency>
  2. <groupId>com.datastax.cassandra</groupId>
  3. <artifactId>cassandra-driver-core</artifactId>
  4. <exclusions>
  5. <exclusion>
  6. <groupId>io.dropwizard.metrics</groupId>
  7. <artifactId>metrics-core</artifactId>
  8. </exclusion>
  9. </exclusions>
  10. </dependency>
  11. <dependency>
  12. <groupId>org.apache.logging.log4j</groupId>
  13. <artifactId>log4j-cassandra</artifactId>
  14. </dependency>
  1. Exception in thread "main" java.lang.NoClassDefFoundError: com/codahale/metrics/MetricRegistry
  2. at com.datastax.driver.core.Metrics.<init>(Metrics.java:45)
  3. at com.datastax.driver.core.Cluster$Manager.init(Cluster.java:1501)
  4. at com.datastax.driver.core.Cluster.init(Cluster.java:208)
  5. at com.datastax.driver.core.Cluster.connectAsync(Cluster.java:376)
  6. at com.datastax.driver.core.Cluster.connect(Cluster.java:332)
  7. at org.apache.logging.log4j.cassandra.CassandraManager.startupInternal(CassandraManager.java:74)
  8. at org.apache.logging.log4j.core.appender.db.AbstractDatabaseManager.startup(AbstractDatabaseManager.java:222)
  9. at org.apache.logging.log4j.core.appender.db.AbstractDatabaseAppender.start(AbstractDatabaseAppender.java:172)
  10. at org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:266)
  11. at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:548)
  12. at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:620)
  13. at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:637)
  14. at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:231)
  15. at org.apache.logging.log4j.core.async.AsyncLoggerContext.start(AsyncLoggerContext.java:76)
  16. at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:153)
  17. at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:45)
  18. at org.apache.logging.log4j.LogManager.getContext(LogManager.java:194)
  19. at org.apache.commons.logging.LogAdapter$Log4jLog.<clinit>(LogAdapter.java:155)
  20. at org.apache.commons.logging.LogAdapter$Log4jAdapter.createLog(LogAdapter.java:122)
  21. at org.apache.commons.logging.LogAdapter.createLog(LogAdapter.java:89)
  22. at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:67)
  23. at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:59)
  24. at org.springframework.boot.SpringApplication.<clinit>(SpringApplication.java:194)
  25. at Application.main(Application.java:27)
  26. Caused by: java.lang.ClassNotFoundException: com.codahale.metrics.MetricRegistry
  27. at java.net.URLClassLoader.findClass(Unknown Source)
  28. at java.lang.ClassLoader.loadClass(Unknown Source)
  29. at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
  30. at java.lang.ClassLoader.loadClass(Unknown Source)
  31. ... 24 more

依赖关系树是

  1. +- org.springframework.boot:spring-boot-starter-log4j2:jar:2.1.5.RELEASE:compile
  2. [INFO] | | +- org.apache.logging.log4j:log4j-slf4j-impl:jar:2.11.2:compile
  3. [INFO] | | | \- org.apache.logging.log4j:log4j-api:jar:2.11.2:compile
  4. [INFO] | | +- org.apache.logging.log4j:log4j-core:jar:2.11.2:compile
  5. [INFO] | | +- org.apache.logging.log4j:log4j-jul:jar:2.11.2:compile
  6. [INFO] | | \- org.slf4j:jul-to-slf4j:jar:1.7.26:compile
  7. [INFO] | +- org.springframework.boot:spring-boot-configuration-processor:jar:2.1.5.RELEASE:compile
  8. [INFO] | +- com.lmax:disruptor:jar:3.3.6:compile
  9. [INFO] | +- com.datastax.cassandra:cassandra-driver-core:jar:3.6.0:compile
  10. [INFO] | | +- io.netty:netty-handler:jar:4.1.36.Final:compile
  11. [INFO] | | | +- io.netty:netty-common:jar:4.1.36.Final:compile
  12. [INFO] | | | +- io.netty:netty-buffer:jar:4.1.36.Final:compile
  13. [INFO] | | | +- io.netty:netty-transport:jar:4.1.36.Final:compile
  14. [INFO] | | | | \- io.netty:netty-resolver:jar:4.1.36.Final:compile
  15. [INFO] | | | \- io.netty:netty-codec:jar:4.1.36.Final:compile
  16. [INFO] | | +- com.google.guava:guava:jar:19.0:compile
  17. [INFO] | | +- com.github.jnr:jnr-ffi:jar:2.1.7:compile
  18. [INFO] | | | +- com.github.jnr:jffi:jar:1.2.16:compile
  19. [INFO] | | | +- com.github.jnr:jffi:jar:native:1.2.16:runtime
  20. [INFO] | | | +- org.ow2.asm:asm:jar:5.0.3:compile
  21. [INFO] | | | +- org.ow2.asm:asm-commons:jar:5.0.3:compile
  22. [INFO] | | | +- org.ow2.asm:asm-analysis:jar:5.0.3:compile
  23. [INFO] | | | +- org.ow2.asm:asm-tree:jar:5.0.3:compile
  24. [INFO] | | | +- org.ow2.asm:asm-util:jar:5.0.3:compile
  25. [INFO] | | | \- com.github.jnr:jnr-x86asm:jar:1.0.2:compile
  26. [INFO] | | \- com.github.jnr:jnr-posix:jar:3.0.44:compile
  27. [INFO] | | \- com.github.jnr:jnr-constants:jar:0.9.9:compile
  28. [INFO] | \- org.apache.logging.log4j:log4j-cassandra:jar:2.11.2:compile

我已经添加了该站点的度量标准jmx依赖性指南
度量4兼容性,但应用程序在生成记录器时再次抛出下面的异常

  1. <dependency>
  2. <groupId>io.dropwizard.metrics</groupId>
  3. <artifactId>metrics-jmx</artifactId>
  4. <version>4.0.5</version>
  5. </dependency>
  1. Exception in thread "main" java.lang.NoClassDefFoundError: com/codahale/metrics/JmxReporter
  2. at com.datastax.driver.core.Metrics.<init>(Metrics.java:146)
  3. at com.datastax.driver.core.Cluster$Manager.init(Cluster.java:1501)
  4. at com.datastax.driver.core.Cluster.init(Cluster.java:208)
  5. at com.datastax.driver.core.Cluster.connectAsync(Cluster.java:376)
  6. at com.datastax.driver.core.Cluster.connect(Cluster.java:332)
  7. at org.apache.logging.log4j.cassandra.CassandraManager.startupInternal(CassandraManager.java:74)
  8. at org.apache.logging.log4j.core.appender.db.AbstractDatabaseManager.startup(AbstractDatabaseManager.java:222)
  9. at org.apache.logging.log4j.core.appender.db.AbstractDatabaseAppender.start(AbstractDatabaseAppender.java:172)
  10. at org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:266)
  11. at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:548)
  12. at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:620)
  13. at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:637)
  14. at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:231)
  15. at org.apache.logging.log4j.core.async.AsyncLoggerContext.start(AsyncLoggerContext.java:76)
  16. at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:153)
  17. at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:45)
  18. at org.apache.logging.log4j.LogManager.getContext(LogManager.java:194)
  19. at org.apache.logging.log4j.LogManager.getLogger(LogManager.java:581)
  20. at com.example.demo.Application.<clinit>(Application.java:13)
  21. Caused by: java.lang.ClassNotFoundException: com.codahale.metrics.JmxReporter
  22. at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
  23. at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
  24. at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
  25. at java.lang.ClassLoader.loadClass(ClassLoader.java:357)

谢谢您

piok6c0g

piok6c0g1#

正如我所看到的,您正在使用log4j 2.8.1和nosql记录器,但是spring使用的是2.11.2。
您应该从spring-boot-starter-log4j2中排除log4j2。

相关问题