I dont think the log4j JDBCAppender is made for OSGi.
It probably tries to load the mysql driver using its own classloader which of course has no import for the mysql packages.

Instead you should take a look at apache decanter. It also has an appender for jdbc. So this could work with mysql.

I would also suggest to look into elasticsearch instead of jdbc to store logs. It works much better for this case than a relational DB.

Christian

Am 12.11.2015 um 12:47 schrieb Ravi Nallappan:
Hi,

I am trying to get karaf to log into mysql LOGS table.

However, karaf throwing following error:
dev@ubuntu:~/apache-karaf-4.0.1$ bin/karaf
log4j:ERROR Failed to load driver
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver not found by 
org.ops4j.pax.logging.pax-logging-service [2]
        at 
org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1558)
        at 
org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:79)
        at 
org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1998)

Following are the steps I did. Where did I go wrong?

1) I have copied mysql connector bundle as follow:
dev@ubuntu:~/apache-karaf-4.0.1$ find system/ | grep mysql
system/mysql
system/mysql/mysql-connector-java
system/mysql/mysql-connector-java/5.1.37
system/mysql/mysql-connector-java/5.1.37/mysql-connector-java-5.1.37.jar

2) Added to startup properties
mvn\:mysql/mysql-connector-java/5.1.37 = 5

3) Added DBAppender to etc/org.ops4j.pax.logging.cfg
log4j.rootLogger=INFO, out, DB, osgi:*
:
# Define the DB appender
log4j.appender.DB=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.DB.URL=jdbc:mysql://localhost/logdb
log4j.appender.DB.driver=com.mysql.jdbc.Driver
log4j.appender.DB.user=root
log4j.appender.DB.password=
log4j.appender.DB.sql=INSERT INTO LOGS VALUES('%x','%d','%C','%p','%m')
log4j.appender.DB.layout=org.apache.log4j.PatternLayout

Thanks and regards,
Ravi Nallappan


Reply via email to