Hi Jonathan,

You seem to be using DBAppender from logback-access as shown by the config line below:

<appender name="DB" class="ch.qos.logback.access.db.DBAppender">

Try to use ch.qos.logback.classic.db.DBAppender instead.

HTH,

On 08.11.2012 12:30, [email protected] wrote:
Hello List,

I'm using the DBAppender with Logback 1.0.7 and I'm getting the following 
Exception:

11:54:18,066 |-ERROR in ch.qos.logback.access.db.DBAppender[DB] - problem 
appending event java.lang.ClassCastException: 
ch.qos.logback.classic.spi.LoggingEvent cannot be cast to 
ch.qos.logback.access.spi.IAccessEvent
        at java.lang.ClassCastException: 
ch.qos.logback.classic.spi.LoggingEvent cannot be cast to 
ch.qos.logback.access.spi.IAccessEvent
        at      at 
ch.qos.logback.access.db.DBAppender.subAppend(DBAppender.java:36)
        at      at 
ch.qos.logback.core.db.DBAppenderBase.append(DBAppenderBase.java:108)
        at      at 
ch.qos.logback.core.UnsynchronizedAppenderBase.doAppend(UnsynchronizedAppenderBase.java:88)
        at      at 
ch.qos.logback.core.spi.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:48)
        at      at 
ch.qos.logback.classic.Logger.appendLoopOnAppenders(Logger.java:280)
        at      at ch.qos.logback.classic.Logger.callAppenders(Logger.java:267)
        at      at 
ch.qos.logback.classic.Logger.buildLoggingEventAndAppend(Logger.java:449)
        at      at ch.qos.logback.classic.Logger.filterAndLog_1(Logger.java:421)
        at      at ch.qos.logback.classic.Logger.info(Logger.java:611)
        at      at de.swm.pmf.logtest.LoggingThread.run(LoggingThread.java:16)
        at      at java.lang.Thread.run(Unknown Source)"

I'm not quite certain what the problem is, but I was looking through the code 
and have found the following:
Logger.appendLoopOnAppenders has ILoggingEvent as an Parameter, this Parameter is passed through to the 
AppenderAttachableImpl.appendLoopOnAppenders, which is ok as the AAI is typed as 
AAI<ILoggingEvent>. The AAI has a List<Appender<E>> where E seems to be bound to the 
Type of the AAI, which is ILoggingEvent. UnsynchronizedAppenderBase is still typed as ILoggingEvent and 
therefore UnsynchronizedAppenderBase.doAppend takes an ILoggingEvent as Parameter and passes that 
through to ch.qos.logback.core.db.DBAppender.append, where we are leaving package 
ch.qos.logback.core.db for ch.qos.logback.access.db and the DBAppender there (a child of the 
core-DBAppender) is typed as DBAppender<IAccessEvent>, hence the ClassCastException.

What I'm not getting is, why the code compiled originally, because clearly the 
DBAppender cannot be typed ILoggingEvent and IAccessEvent at the same time.

I appreciate any help or pointers because searching the web gives nothing 
useful and I'm really stuck here.

Kind regards,
Jonathan

My configuration is pretty much straight forward, stolen from the example:
<configuration>
        <statusListener class="ch.qos.logback.core.status.OnConsoleStatusListener" 
/>
        <appender name="DB" class="ch.qos.logback.access.db.DBAppender">
                <connectionSource
                        
class="ch.qos.logback.core.db.DriverManagerConnectionSource">
                        <driverClass>com.mysql.jdbc.Driver</driverClass>
                        <url>jdbc:mysql://localhost:3306/logbackdb</url>
                        <user>root</user>
                        <password>mysqlroot</password>
                </connectionSource>
                <insertHeaders>false</insertHeaders>
        </appender>

        <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
                <!-- encoders are assigned the type 
ch.qos.logback.classic.encoder.PatternLayoutEncoder
                        by default -->
                <encoder>
                        <pattern>%-4relative [%thread] %-5level - 
%msg%n</pattern>
                </encoder>
        </appender>

        <root level="debug">
                <appender-ref ref="STDOUT" />
        </root>

        <logger name="logexample" additivity="false">
                <appender-ref ref="DB" />
        </logger>
</configuration>




--
Ceki
http://twitter.com/#!/ceki
_______________________________________________
Logback-user mailing list
[email protected]
http://mailman.qos.ch/mailman/listinfo/logback-user

Reply via email to