我正在尋找在應用程序中使用Logback Classic DB Appender(ch.qos.logback.classic.db.DBAppender)。數據庫是Sybase ASE。我使用c3p0連接池。logback dbappender性能
除了數據庫appender,我也有一個滾動文件appender。問題是,在數據庫Appender中,我看到性能急劇下降。例如,僅使用滾動文件appender,需要13 ms(毫秒)才能將消息記錄到文件。但是,使用滾動文件appender和db appender時,需要4510 ms(4.5秒)才能將同一組消息輸出到文件和數據庫。
Logback DBAppender文檔提到,使用c3p0連接池,插入單個日誌記錄語句大約需要1ms。我看到的數字比這個數字多出一千倍。不知道什麼是錯的。以下是我的logback.xml文件:
<configuration debug="true" scan="true">
<property resource="log.properties" />
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<!-- encoders are assigned the type ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.file.dir}/${project.artifactId}.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- daily rollover -->
<fileNamePattern>${project.artifactId}.%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- keep 30 days' worth of history -->
<maxHistory>${log.file.rolling.history.days}</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>
</encoder>
</appender>
<appender name="DB" class="ch.qos.logback.classic.db.DBAppender">
<connectionSource class="ch.qos.logback.core.db.DataSourceConnectionSource">
<dataSource class="com.mchange.v2.c3p0.ComboPooledDataSource">
<driverClass>${log.db.driver}</driverClass>
<jdbcUrl>jdbc:sybase:Tds:${log.db.server}:${log.db.port}/${log.db.name}</jdbcUrl>
<serverName>${log.db.server}</serverName>
<databaseName>${log.db.name}</databaseName>
<user>${log.db.user}</user>
<password>${log.db.password}</password>
</dataSource>
</connectionSource>
</appender>
<root level="INFO">
<appender-ref ref="CONSOLE" />
<appender-ref ref="FILE" />
</root>
</configuration>
任何指針讚賞。
謝謝。
您可以創建一個參考測試用例,使用普通JDBC添加相同數量的數據,每個記錄在單獨的事務中?我不認爲Logback會增加任何重要的開銷,所以看看它可以直接完成的速度有多快會很有趣。 –