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?
You probably don't want commons logging on your classpath. See here: http://www.slf4j.org/legacy.htmlOn 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@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@logicscope.com<mailto:lance.white@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@qos.ch
<mailto:logback-user-bounces@qos.ch>
[mailto:logback-user-bounces@qos.ch
<mailto:logback-user-bounces@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@googlemail.com<mailto:clemens.siebler@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@googlemail.com<mailto:clemens.siebler@googlemail.com>> wrote:<nabble@diroussel.xsmail.com <mailto:nabble@diroussel.xsmail.com>>
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
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@googlemail.com<mailto:clemens.siebler@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@qos.ch
http://qos.ch/mailman/listinfo/logback-user
_______________________________________________
Logback-user mailing list
Logback-user@qos.ch
http://qos.ch/mailman/listinfo/logback-user
_______________________________________________
Logback-user mailing list
Logback-user@qos.ch
http://qos.ch/mailman/listinfo/logback-user