postgresql – 具有logback的异步DBAppender

前端之家收集整理的这篇文章主要介绍了postgresql – 具有logback的异步DBAppender前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在开发一个使用logback进行日志记录的应用程序.我使用logback DBAppender将日志插入到DB中.

一切都很适合我,我能够插入日志并查看数据库.

我使用200个日志代码行进行了一些测试,并测量了这200个日志的时间消耗,并且在不使用DBAppender的情况下得到了10毫秒.当我添加DBAppender时,我得到了大约2700毫秒.

我试图使用ch.qos.logback.classic.AsyncAppender而没有运气使其异步工作.我总是将0结果插入到我的数据库中.

我的配置如下所示:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <configuration debug="true">
  3.  
  4. <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
  5. <!-- encoders are by default assigned the type
  6. ch.qos.logback.classic.encoder.PatternLayoutEncoder -->
  7. <encoder>
  8. <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
  9. </encoder>
  10. </appender>
  11.  
  12. <appender name="DBAppPostgresql" class="ch.qos.logback.classic.db.DBAppender">
  13. <connectionSource class="ch.qos.logback.core.db.DriverManagerConnectionSource">
  14. <dataSource class="com.mchange.v2.c3p0.ComboPooledDataSource">
  15. <driverClass>org.postgresql.Driver</driverClass>
  16. <url>jdbc:postgresql://127.0.0.1:5678/DB</url>
  17. <user>YYYYY</user>
  18. <password>XXX</password>
  19. </dataSource>
  20. </connectionSource>
  21. <sqlDialect class="ch.qos.logback.core.db.dialect.PostgresqlDialect" />
  22. <insertHeaders>true</insertHeaders>
  23. </appender>
  24.  
  25. <appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender">
  26. <appender-ref ref="DBAppPostgresql" />
  27. <includeCallerData>true</includeCallerData>
  28. </appender>
  29.  
  30. <root level="debug">
  31. <appender-ref ref="ASYNC" />
  32. <appender-ref ref="STDOUT" />
  33. </root>
  34. </configuration>

我的配置有什么缺失吗?或者还有其他方法可以让它更快地将日志插入数据库吗?

请注意,我正在使用postgresql

谢谢,

编辑:

我在slf4j 1.7.5上使用logback 1.0.11.我也在使用postgresql 8.0.325.

logback的内部状态是:

  1. 10:52:09,693 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.groovy]
  2. 10:52:09,693 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.xml]
  3. 10:52:09,693 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource [logback.xml] at [file:/D:/BOOM/BoomFinancial/BoomMonitoringTesting/bin/logback.xml]
  4. 10:52:09,759 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.ConsoleAppender]
  5. 10:52:09,761 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [STDOUT]
  6. 10:52:09,771 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property
  7. 10:52:09,800 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.classic.db.DBAppender]
  8. 10:52:09,803 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [DBAppPostgresql]
  9. 10:52:09,809 |-ERROR in ch.qos.logback.core.joran.spi.Interpreter@14:75 - no applicable action for [dataSource],current pattern is [[configuration][appender][connectionSource][dataSource]]
  10. 10:52:09,866 |-INFO in ch.qos.logback.core.db.dialect.DBUtil@30e34726 - Could not call supportsGetGeneratedKeys method. This may be recoverable
  11. 10:52:09,866 |-INFO in ch.qos.logback.core.db.DriverManagerConnectionSource@195428dd - Driver name=Postgresql Native Driver
  12. 10:52:09,866 |-INFO in ch.qos.logback.core.db.DriverManagerConnectionSource@195428dd - Driver version=Postgresql 8.0 JDBC2 with NO SSL (build 325)
  13. 10:52:09,866 |-INFO in ch.qos.logback.core.db.DriverManagerConnectionSource@195428dd - supportsGetGeneratedKeys=false
  14. 10:52:09,867 |-ERROR in ch.qos.logback.core.joran.spi.Interpreter@21:77 - no applicable action for [sqlDialect],current pattern is [[configuration][appender][sqlDialect]]
  15. 10:52:09,868 |-ERROR in ch.qos.logback.core.joran.spi.Interpreter@22:21 - no applicable action for [insertHeaders],current pattern is [[configuration][appender][insertHeaders]]
  16. 10:52:09,870 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.classic.AsyncAppender]
  17. 10:52:09,872 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [ASYNC]
  18. 10:52:09,872 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [DBAppPostgresql] to ch.qos.logback.classic.AsyncAppender[ASYNC]
  19. 10:52:09,872 |-INFO in ch.qos.logback.classic.AsyncAppender[ASYNC] - Attaching appender named [DBAppPostgresql] to AsyncAppender.
  20. 10:52:09,874 |-INFO in ch.qos.logback.classic.AsyncAppender[ASYNC] - Setting discardingThreshold to 51
  21. 10:52:09,874 |-INFO in ch.qos.logback.classic.joran.action.RootLoggerAction - Setting level of ROOT logger to DEBUG
  22. 10:52:09,875 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [ASYNC] to Logger[ROOT]
  23. 10:52:09,875 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [STDOUT] to Logger[ROOT]
  24. 10:52:09,875 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - End of configuration.
  25. 10:52:09,876 |-INFO in ch.qos.logback.classic.joran.JoranConfigurator@23e0512a - Registering current configuration as safe fallback point
logback报告了一条错误消息:
  1. 0:52:09,current pattern is [[configuration][appender][connectionSource][dataSource]]

这表明无法理解嵌套在其中的元素.以下是配置文件的相关部分:

  1. <appender name="DBAppPostgresql" class="ch.qos.logback.classic.db.DBAppender">
  2. <!-- DriverManagerConnectionSource does not have a dataSource property -->
  3. <connectionSource class="ch.qos.logback.core.db.DriverManagerConnectionSource">
  4. <dataSource class="com.mchange.v2.c3p0.ComboPooledDataSource">
  5. <driverClass>org.postgresql.Driver</driverClass>
  6. <url>jdbc:postgresql://127.0.0.1:5678/DB</url>
  7. <user>YYYYY</user>
  8. <password>XXX</password>
  9. </dataSource>
  10. </connectionSource>
  11. <sqlDialect class="ch.qos.logback.core.db.dialect.PostgresqlDialect" />
  12. <insertHeaders>true</insertHeaders>
  13. </appender>

ch.qos.logback.core.db.DriverManagerConnectionSource没有dataSource属性,而ch.qos.logback.core.db.DataSourceConnectionSource没有.您可能希望使用以下命令配置DBAppPostgresql

  1. <appender name="DBAppPostgresql" class="ch.qos.logback.classic.db.DBAppender">
  2. <!-- use DataSourceConnectionSource instead of DriverManagerConnectionSource -->
  3. <connectionSource class="ch.qos.logback.core.db.DataSourceConnectionSource">
  4. <dataSource class="com.mchange.v2.c3p0.ComboPooledDataSource">
  5. <driverClass>org.postgresql.Driver</driverClass>
  6. <url>jdbc:postgresql://127.0.0.1:5678/DB</url>
  7. <user>YYYYY</user>
  8. <password>XXX</password>
  9. </dataSource>
  10. </connectionSource>
  11. <sqlDialect class="ch.qos.logback.core.db.dialect.PostgresqlDialect" />
  12. <insertHeaders>true</insertHeaders>
  13. </appender>

猜你在找的Postgre SQL相关文章