
Hello Ceki, Thanks for the quick reply and fix! It worked no problem. Here is the code I used as you stated. public static void main(String[] args) throws Exception { // You can put values in the MDC at any time. We first put the // first name MDC.put("first", "Dorothy"); LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory(); loggerContext.shutdownAndReset(); // Configure logback PatternLayout layout = new PatternLayout(); layout.setContext(loggerContext); 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); // get another logger Logger logger = (Logger) LoggerFactory.getLogger(MDCLogging.class); // We now put the last name MDC.put("last", "Parker"); // The most beautiful two words in the English language according // to Dorothy Parker: logger.info("Check enclosed."); logger.debug("The most beautiful two words in English."); MDC.put("first", "Richard"); MDC.put("last", "Nixon"); logger.info("I am not a crook."); logger.info("Attributed to the former US president. 17 Nov 1973."); } And the result: 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 US president. 17 Nov 1973. Thanks, Daniel King Vurv The information contained in this message may be privileged and confidential and protected from disclosure. If the reader of this message is not the intended recipient, or an employee or agent responsible for delivering this message to the intended recipient, you are hereby notified that any dissemination, distribution or copying of this communication is strictly prohibited. If you have received this communication in error, please notify me immediately by replying to the message and deleting it from your computer. Thank you. -----Original Message----- From: logback-user-bounces@qos.ch [mailto:logback-user-bounces@qos.ch] On Behalf Of Ceki Gulcu Sent: Friday, April 11, 2008 5:59 PM To: logback users list Subject: Re: [logback-user] No context given for compiler/Parser Error withSimpleMDC example Hello Daniel, I could easily reproduce the "%PARSER_ERROR_X" output. Fortunately, it's a bug in the SimpleMDC example, instead of in main code. You have two options. 1) remove the configuration code in SimpleMDC and replace it with a config file. The code then becomes: package chapter7; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.slf4j.MDC; public class SimpleMDC { static public void main(String[] args) throws Exception { // You can put values in the MDC at any time. We first put the // first name MDC.put("first", "Dorothy"); // get another logger Logger logger = LoggerFactory.getLogger(SimpleMDC.class); // We now put the last name MDC.put("last", "Parker"); // The most beautiful two words in the English language according // to Dorothy Parker: logger.info("Check enclosed."); logger.debug("The most beautiful two words in English."); MDC.put("first", "Richard"); MDC.put("last", "Nixon"); logger.info("I am not a crook."); logger.info("Attributed to the former US president. 17 Nov 1973."); } } Here is the config file. <configuration> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <layout class="ch.qos.logback.classic.PatternLayout"> <Pattern>%X{first} %X{last} - %m%n</Pattern> </layout> </appender> <root> <level value="debug" /> <appender-ref ref="STDOUT" /> </root> </configuration> 2) Alternatively, modify the existing SimpleMDC example by adding the following lines: + LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory(); + loggerContext.shutdownAndReset(); PatternLayout layout = new PatternLayout(); + layout.setContext(loggerContext); Anyway, I will fix this problem (in the examples) for the next version of logback. The missing import in "Ch# 7 SimpleMDC" example has been fixed in SVN trunk. HTH, Daniel King wrote:
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 US president. 17 Nov 1973.
%PARSER_ERROR_X %PARSER_ERROR_X - %PARSER_ERROR_m%PARSER_ERROR_n
-- Ceki Gülcü QOS.ch is looking to hire talented developers in Switzerland. If interested, please contact c e k i @ q o s . c h _______________________________________________ Logback-user mailing list Logback-user@qos.ch http://qos.ch/mailman/listinfo/logback-user