Any help would be greatly appreciated since I want my
company to change over from log4j to slf4j and logback. However with this
error, I won’t be able to change over to logback only slf4j. I
searched the archives and found no bug or solution for this error:
LOGBACK: No context given for ch.qos.logback.core.pattern.parser.Compiler@4a65e0
15:10:23.205 [main] INFO chapter7.SimpleMDC - Check
enclosed.
%PARSER_ERROR_X %PARSER_ERROR_X -
%PARSER_ERROR_m%PARSER_ERROR_n15:10:23.220 [main] DEBUG chapter7.SimpleMDC -
The most beautiful two words in English.
%PARSER_ERROR_X %PARSER_ERROR_X -
%PARSER_ERROR_m%PARSER_ERROR_n15:10:23.220 [main] INFO chapter7.SimpleMDC
- I am not a crook.
%PARSER_ERROR_X %PARSER_ERROR_X -
%PARSER_ERROR_m%PARSER_ERROR_n15:10:23.220 [main] INFO chapter7.SimpleMDC
- Attributed to the former
%PARSER_ERROR_X %PARSER_ERROR_X -
%PARSER_ERROR_m%PARSER_ERROR_n
I’m using the following:
Windows XP
JDK 1.6
I created a directory named logback.
I put the following jars in it:
logback-core-0.9.9.jar
logback-classic-0.9.9.jar
logback-examples-0.9.9.jar
slf4j-api-1.5.0.jar (I also tried slf4j-api-1.4.3.jar
with same results)
I created a bat file named SimpleMDC.bat. It contains
the following:
java -classpath
"slf4j-api-1.5.0.jar;logback-core-0.9.9.jar;logback-classic-0.9.9.jar;logback-examples-0.9.9.jar;"
chapter7.SimpleMDC
I opened a command prompt and ran the bat file with the
following output:
C:\logback>SimpleMDC
C:\logback>java -classpath
"slf4j-api-1.5.0.jar;logback-core-0.9.9.jar;logback-classic-0.9.9.jar;logback-examples-0.9.9.jar;"
chapter7.SimpleMDC
LOGBACK: No context given for ch.qos.logback.core.pattern.parser.Compiler@4a65e0
15:10:23.205 [main] INFO chapter7.SimpleMDC - Check
enclosed.
%PARSER_ERROR_X %PARSER_ERROR_X -
%PARSER_ERROR_m%PARSER_ERROR_n15:10:23.220 [main] DEBUG chapter7.SimpleMDC -
The most beautiful two words in English.
%PARSER_ERROR_X %PARSER_ERROR_X -
%PARSER_ERROR_m%PARSER_ERROR_n15:10:23.220 [main] INFO chapter7.SimpleMDC
- I am not a crook.
%PARSER_ERROR_X %PARSER_ERROR_X -
%PARSER_ERROR_m%PARSER_ERROR_n15:10:23.220 [main] INFO chapter7.SimpleMDC
- Attributed to the former
%PARSER_ERROR_X %PARSER_ERROR_X -
%PARSER_ERROR_m%PARSER_ERROR_n
It might be of interest that whenever I used 0.8.1, 0.9.1,
0.9.2, 0.9.3, 0.9.4, 0.9.5, 0.9.6 and 0.9.7 core and classic jars I got the
following error when running the SimpleMDC code in a Maven 2 project using
Eclipse 3.3 I created:
SLF4J: Failed to load class
"org.slf4j.impl.StaticMDCBinder".
SLF4J: See http://www.slf4j.org/codes.html#no_static_mdc_binder for
further details.
Exception in thread "main" java.lang.NoClassDefFoundError:
org/slf4j/impl/StaticMDCBinder
at org.slf4j.MDC.<clinit>(MDC.java:69)
at
com.vurv.logging.MDCLogging.main(MDCLogging.java:15)
However, whenever I used 0.9.8 and 0.9.9 core and classic
jars I got the same parser_error as listed above.
Also the Ch# 7 example in the docs
is missing this line of code: import ch.qos.logback.classic.spi.LoggingEvent;
It is in the SimpleMDC code in the examples jar though.
I also took this same project and copied it. Then I changed
it over to use slf and log4j. I changed the logback code to log4j like
this:
Replace this code:
// Configure logback
PatternLayout
layout = new
PatternLayout();
layout.setPattern("%X{first} %X{last} - %m%n");
layout.start();
ConsoleAppender<LoggingEvent>
appender = new
ConsoleAppender<LoggingEvent>();
appender.setLayout(layout);
appender.start();
// cast root logger to
c.q.logback.classic.Logger so that we can attach an
// appender to it
ch.qos.logback.classic.Logger
root = (ch.qos.logback.classic.Logger) LoggerFactory.getLogger("root");
root.addAppender(appender);
With this code:
PatternLayout
layout = new
PatternLayout();
layout.setConversionPattern("%X{first} %X{last} - %m%n");
ConsoleAppender
appender = new
ConsoleAppender(layout);
BasicConfigurator.configure(appender);
The rest of the
code is identical. This produced the correct output with slf4j and log4j.
Dorothy Parker - Check enclosed.
Dorothy Parker - The most beautiful two words in English.
Richard Nixon - I am not a crook.
Richard Nixon -
Attributed to the former
Thanks,
Daniel