[logback-user] Retrieving the log filenames

Clemens Siebler clemens.siebler at googlemail.com
Mon Apr 4 14:30:20 CEST 2011


Thanks for the notice, however it didn't fix the problem either. After going
through everything again, I came up with this as the minimal configuration
required to keep everything running:
slf4j
logback
jcl-over-slf4j
log4j (can't use log4j-over-slf4j, since the springframework still uses the
Appender class, which isn't defined in the bridge)

Now the strange thing: it actually does work when I execute the code for
retrieving the log's name straight after entering main(). Executing the code
somewhere later (this is a fairly complex project), results in the mentioned
ClassCastException. Any ideas where this could come from?

On Sun, Apr 3, 2011 at 10:52 PM, David Roussel
<nabble at diroussel.xsmail.com>wrote:

> You probably don't want commons logging on your classpath.  See here:
> http://www.slf4j.org/legacy.html
>
>
> On 29 Mar 2011, at 13:53, Clemens Siebler wrote:
>
> Thanks Ceki, that could be the issue. I currently have a bunch of jars in
> my classpath, that all have to do with logging:
>
> commons-logging-api.jar
> commons-logging.jar
> log4j.jar
> logback-classic-0.9.21.jar
> logback-core-0.9.21.jar
> slf4j-api-1.6.1.jar
>
> I use Jetty+Spring Framework and the latter one requires Log4j and the
> commons-logging jars. The part of the application that I wrote, only uses
> Logback+Slf4j. Any ideas how to get away with this?
>
>
> On Tue, Mar 29, 2011 at 2:32 PM, Ceki Gulcu <ceki at qos.ch> wrote:
>
>> Hello Clemens,
>>
>> Lance's suggestion is almost certaint on target. Do check your classpath
>> to see if there are multiple instances of logback-classic lying around.
>> --
>> Ceki
>>
>> On 29.03.2011 14:13, Clemens Siebler wrote:
>>
>>> Thanks for the hint Lance! I feel like this could be the issue. However,
>>> I haven't managed to actually find a solution to it. I tried starting my
>>> application with -verbose:class, but I can only see one entry of:
>>> [Loaded ch.qos.logback.classic.LoggerContext from
>>> file:/yyy/logback-classic-0.9.21.jar]. I suppose there should be
>>> multiple of these, if that actually is the problem? Thanks for your help!
>>>
>>>
>>> On Fri, Mar 25, 2011 at 4:54 PM, Lance White <lance.white at logicscope.com
>>> <mailto:lance.white at logicscope.com>> wrote:
>>>
>>>     >> However, when I try to use this code outside of my test
>>>    environement, I get the following Exception on the first line:
>>>     >> java.lang.ClassCastException:
>>>    ch.qos.logback.classic.LoggerContext cannot be cast to
>>>    ch.qos.logback.classic.LoggerContext
>>>
>>>    This is usually a multiple classloader problem.
>>>
>>>    Lance
>>>
>>>    *From:*logback-user-bounces at qos.ch
>>>    <mailto:logback-user-bounces at qos.ch>
>>>    [mailto:logback-user-bounces at qos.ch
>>>    <mailto:logback-user-bounces at qos.ch>] *On Behalf Of *Clemens Siebler
>>>    *Sent:* 24 March 2011 16:16
>>>    *To:* logback users list
>>>    *Subject:* Re: [logback-user] Retrieving the log filenames
>>>
>>>    Ok, I figured out how to get at least the base logfile:
>>>             LoggerContext ctx = (LoggerContext)
>>>    LoggerFactory.getILoggerFactory();
>>>             for (Logger l : ctx.getLoggerList()) {
>>>                 ch.qos.logback.classic.Logger log =
>>>    (ch.qos.logback.classic.Logger) l;
>>>                 Iterator<Appender<ILoggingEvent>> it =
>>>    log.iteratorForAppenders();
>>>                 while (it.hasNext()) {
>>>                     Appender<ILoggingEvent> ap = it.next();
>>>                     if (ap instanceof FileAppender<?> || ap instanceof
>>>    RollingFileAppender<?>) {
>>>                         FileAppender<?> fileAppender =
>>> (FileAppender<?>)ap;
>>>                         System.out.println(fileAppender.getFile());
>>>                     }
>>>                 }
>>>             }
>>>
>>>    However, when I try to use this code outside of my test
>>>    environement, I get the following Exception on the first line:
>>>    java.lang.ClassCastException: ch.qos.logback.classic.LoggerContext
>>>    cannot be cast to ch.qos.logback.classic.LoggerContext
>>>
>>>    Any ideas? I'm currently using Jetty, slf4j and logback. However, it
>>>    seems that there are still some dependencies on log4j in Jetty that
>>>    I can't get rid of...
>>>
>>>    On Tue, Mar 22, 2011 at 10:23 AM, Clemens Siebler
>>>    <clemens.siebler at googlemail.com
>>>    <mailto:clemens.siebler at googlemail.com>> wrote:
>>>
>>>    As far as log4j goes, the getAppender function can be used. However,
>>>    I have not managed to get this one working for logback. Any ideas?
>>>
>>>    On Mon, Mar 21, 2011 at 3:42 PM, Clemens Siebler
>>>    <clemens.siebler at googlemail.com
>>>    <mailto:clemens.siebler at googlemail.com>> wrote:
>>>
>>>    Let's assume the user only changes the logging levels/filter during
>>>    runtime, nothing else.
>>>
>>>    On Mon, Mar 21, 2011 at 3:32 PM, David Roussel
>>>    <nabble at diroussel.xsmail.com <mailto:nabble at diroussel.xsmail.com>>
>>>
>>>    wrote:
>>>
>>>    Would a change notifier be told of the new filename?  I'm not sure,
>>>    but it's worth a check.
>>>
>>>
>>>    On 21 Mar 2011, at 13:56, Clemens Siebler
>>>    <clemens.siebler at googlemail.com
>>>    <mailto:clemens.siebler at googlemail.com>> wrote:
>>>
>>>     > Hi all,
>>>     >
>>>     > I'm currently using Logback (SLF4J) with a TimeBasedRollingPolicy
>>>    defined in logback.xml. Everything works fine, however, I'd like to
>>>    retrieve the filenames of the current logging session since the
>>>    application started. The user can obviously change the log filenames
>>>    and policies in logback.xml, so I don't want them hardcoded in the
>>>    source. My goal is to retrieve these filenames straight within Java
>>>    in order to do some more processing with them. Is there any
>>>    possibility in logback/slf4j to retrieve those names?
>>>     >
>>>     > I currently aquire the logger via:
>>>     > Logger logger = LoggerFactory.getLogger(Test.class);
>>>     >
>>>     > but obviously, this Logger object in particular doesn't provide
>>>    such functionality. Any ideas?
>>>     >
>>>     > Thanks in advance,
>>>     > Clemens
>>>
>>
>>
>> _______________________________________________
>> Logback-user mailing list
>> Logback-user at qos.ch
>> http://qos.ch/mailman/listinfo/logback-user
>>
>
> _______________________________________________
> Logback-user mailing list
> Logback-user at qos.ch
> http://qos.ch/mailman/listinfo/logback-user
>
>
>
> _______________________________________________
> Logback-user mailing list
> Logback-user at qos.ch
> http://qos.ch/mailman/listinfo/logback-user
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://qos.ch/pipermail/logback-user/attachments/20110404/ea795241/attachment.html>


More information about the Logback-user mailing list