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
>