Fabric container: Logging to Database
nicolas.cisco Dec 21, 2016 3:08 PMHi,
i'm trying to set up a Database backend to store logs.
I'm currently using JBoss Fuse 6.2.1.redhat-084 on Fabric Mode. I've created and uploaded a profile with maven. Then, i've imported the org.ops4j.pax.logging pid via karaf shell.
JBossFuse: admin@child> fabric:profile-edit --import-pid --pid org.ops4j.pax.logging my-profile
Then throught the Hawtio web interface, i editted the org.ops4j.pax.logging.properties file of my-profile:
fabric.zookeeper.pid = org.ops4j.pax.logging
log4j.appender.out = org.apache.log4j.RollingFileAppender
log4j.appender.out.append = true
log4j.appender.out.file = /opt/jboss-fuse/6.2.1.redhat-084/data/log/container.log
log4j.appender.out.layout = org.apache.log4j.SanitizingPatternLayout
log4j.appender.out.layout.ConversionPattern = Container %d{ISO8601} | %-5.5p | %-16.16t | %-32.32c{1} | %X{bundle.id} - %X{bundle.name} - %X{bundle.version} | %m%n
log4j.appender.out.layout.replacement = \\n |
log4j.appender.out.layout.replaceRegex = \\n
log4j.appender.out.maxBackupIndex = 10
log4j.appender.out.maxFileSize = 100MB
log4j.appender.sift = org.apache.log4j.sift.MDCSiftingAppender
log4j.appender.sift.appender = org.apache.log4j.FileAppender
log4j.appender.sift.appender.append = true
log4j.appender.sift.appender.file = /opt/jboss-fuse/6.2.1.redhat-084/data/log/${bundle.name}.log
log4j.appender.sift.appender.layout = org.apache.log4j.SanitizingPatternLayout
log4j.appender.sift.appender.layout.ConversionPattern = %d{ISO8601} | %-5.5p | %-16.16t | %-32.32c{1} | %m%n
log4j.appender.sift.appender.layout.replacement = \\n |
log4j.appender.sift.appender.layout.replaceRegex = \\n
log4j.appender.sift.default = karaf
log4j.appender.sift.key = bundle.name
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout = org.apache.log4j.SanitizingPatternLayout
log4j.appender.stdout.layout.ConversionPattern = %d{ISO8601} | %-5.5p | %-16.16t | %-32.32c{1} | %X{bundle.id} - %X{bundle.name} - %X{bundle.version} | %m%n
log4j.appender.stdout.layout.replacement = \\n |
log4j.appender.stdout.layout.replaceRegex = \\n
log4j.appender.db = org.apache.log4j.jdbc.JDBCAppender
log4j.appender.db.URL = jdbc:sqlserver://127.0.0.1:1433;DataBaseName=master
log4j.appender.db.driver=com.microsoft.sqlserver.jdbc.SQLServerDriver
log4j.appender.db.user=sa
log4j.appender.db.password=yourStrong(!)Password
log4j.appender.db.sql = INSERT INTO [dbo].[application_log] (application, level, text) VALUES ('App', 'i','%m')
log4j.appender.db.Threshold = INFO
log4j.appender.db.layout = org.apache.log4j.SanitizingPatternLayout
log4j.appender.db.layout.ConversionPattern = %d{ISO8601} | %-5.5p | %-16.16t | %-32.32c{1} | %X{bundle.id} - %X{bundle.name} - %X{bundle.version} | %m%n
log4j.appender.db.layout.replacement = \\n |
log4j.appender.db.layout.replaceRegex = \\n
log4j.logger.httpclient.wire = WARN
log4j.logger.org.apache.commons.httpclient = WARN
log4j.logger.org.apache.sshd.server.channel.ChannelSession = INFO
log4j.logger.org.apache.zookeeper.client.ZooKeeperSaslClient = WARN
log4j.logger.org.apache.zookeeper.ClientCnxn = ERROR
log4j.logger.org.apache.zookeeper.ClientCnxn$SendThread = ERROR
log4j.logger.org.apache.zookeeper.server.NIOServerCnxn = ERROR
log4j.logger.org.apache.zookeeper.server.NIOServerCnxnFactory = ERROR
log4j.logger.org.apache.zookeeper.server.PrepRequestProcessor = WARN
log4j.logger.org.apache.zookeeper.server.ZooKeeperServer = ERROR
log4j.rootLogger = DEBUG, out, osgi:*, db, outb
log4j.throwableRenderer = org.apache.log4j.OsgiThrowableRenderer
service.pid = org.ops4j.pax.logging
After creating a container with that profile, altought i can see the file /opt/jboss-fuse/6.2.1.redhat-084/data/log/container.log is created and logs are stored there, any log is inserted on the database.
I don't see any error or warning on the container logs, nor on the root container logs.
The table application_log:
CREATE TABLE application_log ( id INT NOT NULL IDENTITY(1,1) PRIMARY KEY, time DATETIME NOT NULL DEFAULT GETDATE(), application varchar(max) NOT NULL, level char NOT NULL, text varchar(max) NOT NULL )
What am i doing wrong? How can i configure JBoss Fuse in order to store logs on a database?
Thanks in advanced!.