You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@karaf.apache.org by Ravi Nallappan <ra...@gmail.com> on 2015/11/12 12:47:39 UTC

Karaf: Adding mysql JDBCAppender

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


Re: Karaf: Adding mysql JDBCAppender

Posted by Christian Schneider <ch...@die-schneider.net>.
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
>