Log into an additional file at Apache Karaf using DSL

classic Classic list List threaded Threaded
8 messages Options
Reply | Threaded
Open this post in threaded view
|

Log into an additional file at Apache Karaf using DSL

Echo
I have a system that uses both Apache Camel and Karaf.

I need some specific processor to log into a new log instead of the default one ,karaf.log.

I have reached that there is a file called "org.ops4j.pax.logging.cfg" that is responsible for logging configuration .

Here it's the file before I mess with it :


################################################################################
#
#    Licensed to the Apache Software Foundation (ASF) under one or more
#    contributor license agreements.  See the NOTICE file distributed with
#    this work for additional information regarding copyright ownership.
#    The ASF licenses this file to You under the Apache License, Version 2.0
#    (the "License"); you may not use this file except in compliance with
#    the License.  You may obtain a copy of the License at
#
#       http://www.apache.org/licenses/LICENSE-2.0
#
#    Unless required by applicable law or agreed to in writing, software
#    distributed under the License is distributed on an "AS IS" BASIS,
#    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#    See the License for the specific language governing permissions and
#    limitations under the License.
#
################################################################################

# Root logger
log4j.rootLogger=INFO, out, osgi:VmLogAppender
log4j.throwableRenderer=org.apache.log4j.OsgiThrowableRenderer

# CONSOLE appender not used by default
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} | %-5.5p | %-16.16t | %-32.32c{1} | %-32.32C %4L | %X{bundle.id} - %X{bundle.name} - %X{bundle.version} | %m%n

# File appender
log4j.appender.out=org.apache.log4j.RollingFileAppender
log4j.appender.out.layout=org.apache.log4j.PatternLayout
log4j.appender.out.layout.ConversionPattern=%d{ABSOLUTE} | %-5.5p | %-16.16t | %-32.32c{1} | %-32.32C %4L | %X{bundle.id} - %X{bundle.name} - %X{bundle.version} | %m%n
log4j.appender.out.file=${karaf.data}/log/karaf.log
log4j.appender.out.append=true
log4j.appender.out.maxFileSize=1MB
log4j.appender.out.maxBackupIndex=10

# Sift appender
log4j.appender.sift=org.apache.log4j.sift.MDCSiftingAppender
log4j.appender.sift.key=bundle.name
log4j.appender.sift.default=karaf
log4j.appender.sift.appender=org.apache.log4j.FileAppender
log4j.appender.sift.appender.layout=org.apache.log4j.PatternLayout
log4j.appender.sift.appender.layout.ConversionPattern=%d{ABSOLUTE} | %-5.5p | %-16.16t | %-32.32c{1} | %-32.32C %4L | %m%n
log4j.appender.sift.appender.file=${karaf.data}/log/$\\{bundle.name\\}.log
log4j.appender.sift.appender.append=true




Now I have added an extra File appender :

# Additional File appender
log4j.rootLogger=INFO,new, osgi:VmLogAppender    
log4j.appender.new=org.apache.log4j.RollingFileAppender
log4j.appender.new.layout=org.apache.log4j.PatternLayout
log4j.appender.new.layout.ConversionPattern=%d{ABSOLUTE} | %-5.5p | %-16.16t | %-32.32c{1} | %-32.32C %4L | %X{bundle.id} - %X{bundle.name} - %X{bundle.version} | %m%n
log4j.appender.new.file=${karaf.data}/log/new.log
log4j.appender.new.append=true
log4j.appender.new.maxFileSize=1MB
log4j.appender.new.maxBackupIndex=10


And from Camel , I logged from DSL :

process(exceptionProcessor).
      process(doSmth).log(LoggingLevel.INFO,"new","That is a new file to log into")
The result now that it logs erverything on the "new.log" file . Regarding the karaf.log , I got this :

Jul 18, 2011 6:00:03 PM org.apache.karaf.main.SimpleFileLock lock
INFO: locking
The question is : how could I log into"new.log" just in case a specific processor . Others will be logged into the karaf.log !!
Reply | Threaded
Open this post in threaded view
|

Re: Log into an additional file at Apache Karaf using DSL

Łukasz Dywicki
You need specific category settings. Karaf uses log4j as logging framework wrapped by pax-logging service. To store log messages from any category follow these steeps:

1. Create new appender (eg. file)
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} | %-5.5p | %-16.16t | %C | %-32.32C %4L | %m%n
log4j.appender.file.file=${karaf.data}/log/my-file.log
log4j.appender.file.append=true
log4j.appender.file.maxFileSize=1MB
log4j.appender.file.maxBackupIndex=10

2. Configure your category
log4j.category.some-category.name-with.dots = DEBUG, file

where file is appender name.

Regards,
Lukasz

> I have a system that uses both Apache Camel and Karaf.
>
> I need some specific processor to log into a new log instead of the default
> one ,karaf.log.
>
> I have reached that there is a file called "org.ops4j.pax.logging.cfg" that
> is responsible for logging configuration .
>
> Here it's the file before I mess with it :
>
>
> ################################################################################
> #
> #    Licensed to the Apache Software Foundation (ASF) under one or more
> #    contributor license agreements.  See the NOTICE file distributed with
> #    this work for additional information regarding copyright ownership.
> #    The ASF licenses this file to You under the Apache License, Version 2.0
> #    (the "License"); you may not use this file except in compliance with
> #    the License.  You may obtain a copy of the License at
> #
> #       http://www.apache.org/licenses/LICENSE-2.0
> #
> #    Unless required by applicable law or agreed to in writing, software
> #    distributed under the License is distributed on an "AS IS" BASIS,
> #    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
> implied.
> #    See the License for the specific language governing permissions and
> #    limitations under the License.
> #
> ################################################################################
>
> # Root logger
> log4j.rootLogger=INFO, out, osgi:VmLogAppender
> log4j.throwableRenderer=org.apache.log4j.OsgiThrowableRenderer
>
> # CONSOLE appender not used by default
> log4j.appender.stdout=org.apache.log4j.ConsoleAppender
> log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
> log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} | %-5.5p |
> %-16.16t | %-32.32c{1} | %-32.32C %4L | %X{bundle.id} - %X{bundle.name} -
> %X{bundle.version} | %m%n
>
> # File appender
> log4j.appender.out=org.apache.log4j.RollingFileAppender
> log4j.appender.out.layout=org.apache.log4j.PatternLayout
> log4j.appender.out.layout.ConversionPattern=%d{ABSOLUTE} | %-5.5p | %-16.16t
> | %-32.32c{1} | %-32.32C %4L | %X{bundle.id} - %X{bundle.name} -
> %X{bundle.version} | %m%n
> log4j.appender.out.file=${karaf.data}/log/karaf.log
> log4j.appender.out.append=true
> log4j.appender.out.maxFileSize=1MB
> log4j.appender.out.maxBackupIndex=10
>
> # Sift appender
> log4j.appender.sift=org.apache.log4j.sift.MDCSiftingAppender
> log4j.appender.sift.key=bundle.name
> log4j.appender.sift.default=karaf
> log4j.appender.sift.appender=org.apache.log4j.FileAppender
> log4j.appender.sift.appender.layout=org.apache.log4j.PatternLayout
> log4j.appender.sift.appender.layout.ConversionPattern=%d{ABSOLUTE} | %-5.5p
> | %-16.16t | %-32.32c{1} | %-32.32C %4L | %m%n
> log4j.appender.sift.appender.file=${karaf.data}/log/$\\{bundle.name\\}.log
> log4j.appender.sift.appender.append=true
>
>
>
>
> Now I have added an extra File appender :
>
> # Additional File appender
> log4j.rootLogger=INFO,new, osgi:VmLogAppender    
> log4j.appender.new=org.apache.log4j.RollingFileAppender
> log4j.appender.new.layout=org.apache.log4j.PatternLayout
> log4j.appender.new.layout.ConversionPattern=%d{ABSOLUTE} | %-5.5p | %-16.16t
> | %-32.32c{1} | %-32.32C %4L | %X{bundle.id} - %X{bundle.name} -
> %X{bundle.version} | %m%n
> log4j.appender.new.file=${karaf.data}/log/new.log
> log4j.appender.new.append=true
> log4j.appender.new.maxFileSize=1MB
> log4j.appender.new.maxBackupIndex=10
>
>
> And from Camel , I logged from DSL :
>
> process(exceptionProcessor).
>      process(doSmth).log(LoggingLevel.INFO,"new","That is a new file to log
> into")
> The result now that it logs erverything on the "new.log" file . Regarding
> the karaf.log , I got this :
>
> Jul 18, 2011 6:00:03 PM org.apache.karaf.main.SimpleFileLock lock
> INFO: locking
> The question is : how could I log into"new.log" just in case a specific
> processor . Others will be logged into the karaf.log !!
>
> --
> View this message in context: http://camel.465427.n5.nabble.com/Log-into-an-additional-file-at-Apache-Karaf-using-DSL-tp4600390p4600390.html
> Sent from the Camel Development mailing list archive at Nabble.com.

Reply | Threaded
Open this post in threaded view
|

Re: Log into an additional file at Apache Karaf using DSL

Echo
I have already made the first step :

log4j.appender.new=org.apache.log4j.RollingFileAppender
log4j.appender.new.layout=org.apache.log4j.PatternLayout
log4j.appender.new.layout.ConversionPattern=%d{ABSOLUTE} | %-5.5p | %-16.16t | %-32.32c{1} | %-32.32C %4L | %X{bundle.id} - %X{bundle.name} - %X{bundle.version} | %m%n
log4j.appender.new.file=${karaf.data}/log/new.log
log4j.appender.new.append=true
log4j.appender.new.maxFileSize=1MB
log4j.appender.new.maxBackupIndex=10

Regarding the 2nd Step :
Is that what u meant :

log4j.rootLogger=INFO,new, osgi:VmLogAppender

Reply | Threaded
Open this post in threaded view
|

Re: Log into an additional file at Apache Karaf using DSL

Łukasz Dywicki
You don need second appender - osgi:VmLogAppender if you wish store messages only in one place. Second appender is unecessary to use first.

> I have already made the first step :
>
> log4j.appender.new=org.apache.log4j.RollingFileAppender
> log4j.appender.new.layout=org.apache.log4j.PatternLayout
> log4j.appender.new.layout.ConversionPattern=%d{ABSOLUTE} | %-5.5p | %-16.16t
> | %-32.32c{1} | %-32.32C %4L | %X{bundle.id} - %X{bundle.name} -
> %X{bundle.version} | %m%n
> log4j.appender.new.file=${karaf.data}/log/new.log
> log4j.appender.new.append=true
> log4j.appender.new.maxFileSize=1MB
> log4j.appender.new.maxBackupIndex=10
>
> Regarding the 2nd Step :
> Is that what u meant :
>
> log4j.rootLogger=INFO,new, osgi:VmLogAppender
>
>
>
> --
> View this message in context: http://camel.465427.n5.nabble.com/Log-into-an-additional-file-at-Apache-Karaf-using-DSL-tp4600390p4600498.html
> Sent from the Camel Development mailing list archive at Nabble.com.

Reply | Threaded
Open this post in threaded view
|

Re: Log into an additional file at Apache Karaf using DSL

Echo
That's the final org.ops4j.pax.logging.cfg after updating ur comments .
Now erverything logs into new.log .
I just need erverything to be logged into karaf.log .
Except for specific process that will only log into new.log


################################################################################
#
#    Licensed to the Apache Software Foundation (ASF) under one or more
#    contributor license agreements.  See the NOTICE file distributed with
#    this work for additional information regarding copyright ownership.
#    The ASF licenses this file to You under the Apache License, Version 2.0
#    (the "License"); you may not use this file except in compliance with
#    the License.  You may obtain a copy of the License at
#
#       http://www.apache.org/licenses/LICENSE-2.0
#
#    Unless required by applicable law or agreed to in writing, software
#    distributed under the License is distributed on an "AS IS" BASIS,
#    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#    See the License for the specific language governing permissions and
#    limitations under the License.
#
################################################################################

# Root logger
log4j.rootLogger=INFO, out, osgi:VmLogAppender
log4j.throwableRenderer=org.apache.log4j.OsgiThrowableRenderer

# CONSOLE appender not used by default
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} | %-5.5p | %-16.16t | %-32.32c{1} | %-32.32C %4L | %X{bundle.id} - %X{bundle.name} - %X{bundle.version} | %m%n



# New File appender
log4j.rootLogger=INFO,new
log4j.appender.new=org.apache.log4j.RollingFileAppender
log4j.appender.new.layout=org.apache.log4j.PatternLayout
log4j.appender.new.layout.ConversionPattern=%d{ABSOLUTE} | %-5.5p | %-16.16t | %-32.32c{1} | %-32.32C %4L | %X{bundle.id} - %X{bundle.name} - %X{bundle.version} | %m%n
log4j.appender.new.file=${karaf.data}/log/new.log
log4j.appender.new.append=true
log4j.appender.new.maxFileSize=1MB
log4j.appender.new.maxBackupIndex=10

# File appender
log4j.appender.out=org.apache.log4j.RollingFileAppender
log4j.appender.out.layout=org.apache.log4j.PatternLayout
log4j.appender.out.layout.ConversionPattern=%d{ABSOLUTE} | %-5.5p | %-16.16t | %-32.32c{1} | %-32.32C %4L | %X{bundle.id} - %X{bundle.name} - %X{bundle.version} | %m%n
log4j.appender.out.file=${karaf.data}/log/karaf.log
log4j.appender.out.append=true
log4j.appender.out.maxFileSize=1MB
log4j.appender.out.maxBackupIndex=10



# Sift appender
log4j.appender.sift=org.apache.log4j.sift.MDCSiftingAppender
log4j.appender.sift.key=bundle.name
log4j.appender.sift.default=karaf
log4j.appender.sift.appender=org.apache.log4j.FileAppender
log4j.appender.sift.appender.layout=org.apache.log4j.PatternLayout
log4j.appender.sift.appender.layout.ConversionPattern=%d{ABSOLUTE} | %-5.5p | %-16.16t | %-32.32c{1} | %-32.32C %4L | %m%n
log4j.appender.sift.appender.file=${karaf.data}/log/$\\{bundle.name\\}.log
log4j.appender.sift.appender.append=true
Reply | Threaded
Open this post in threaded view
|

Re: Log into an additional file at Apache Karaf using DSL

Echo
Hello ,
Actually I have modified my code as I misunderstood u :

log4j.rootLogger=INFO, out,sylk,osgi:VmLogAppender

Now it logs everything on BOTH files .
I just need when I log like the follwong from camel :

process(doSmth).log(LoggingLevel.INFO,"new","Hello New  Logger")

JUST in that case to go and log into the new.log
Reply | Threaded
Open this post in threaded view
|

Re: Log into an additional file at Apache Karaf using DSL

Claus Ibsen-2
On Mon, Jul 18, 2011 at 8:27 PM, Echo <[hidden email]> wrote:

> Hello ,
> Actually I have modified my code as I misunderstood u :
>
> log4j.rootLogger=INFO, out,sylk,osgi:VmLogAppender
>
> Now it logs everything on BOTH files .
> I just need when I log like the follwong from camel :
>
> process(doSmth).log(LoggingLevel.INFO,"new","Hello New  Logger")
>
> JUST in that case to go and log into the new.log
>

I would assume you need to configure the category something like this:
log4j.logger.new=INFO, new

Where that last "new" is the appender name.
And  the first "new" is the log category name used in the Java code.



> --
> View this message in context: http://camel.465427.n5.nabble.com/Log-into-an-additional-file-at-Apache-Karaf-using-DSL-tp4600390p4600588.html
> Sent from the Camel Development mailing list archive at Nabble.com.
>



--
Claus Ibsen
-----------------
FuseSource
Email: [hidden email]
Web: http://fusesource.com
Twitter: davsclaus, fusenews
Blog: http://davsclaus.blogspot.com/
Author of Camel in Action: http://www.manning.com/ibsen/
Reply | Threaded
Open this post in threaded view
|

Re: Log into an additional file at Apache Karaf using DSL

Echo
It's just a step reaming for my goal .

Now it logs into karaf everything even when it goes to that processor that I specified that to be logged into "new.log" .

@ "new.log" , it successfully logs but the log doesn't have the stack trace like what it's been already logged into karaf.log

That's what has been logged into "new.log"

20:41:07,352 | INFO  | qtp3901595-74    | new | rg.apache.camel.processor.Logger  213 | 51 - org.apache.camel.camel-core - 2.6.0 | Hello NewLogger