You can make two different appenders: one that handles DEBUG statements and one that handles ERROR and higher messages or you could change the layout based on the level of the message:
<layout type="ConsoleApplication1.LevelPatternLayout, ConsoleApplication1"> <levelConversionPattern> <level value="DEBUG" /> <conversionPattern value="%level - %message%newline" /> </levelConversionPattern> <levelConversionPattern> <level value="ERROR" /> <conversionPattern value="%level - %logger - %property{ErrorUserId} - %message%newline" /> </levelConversionPattern> </layout> public class LevelPatternLayout : PatternLayout { private readonly Hashtable m_levelToPatternLayout = new Hashtable(); public override void Format(TextWriter writer, LoggingEvent loggingEvent) { var patternLayout = m_levelToPatternLayout[loggingEvent.Level] as PatternLayout; if (patternLayout == null) { base.Format(writer, loggingEvent); } else { patternLayout.Format(writer, loggingEvent); } } public void AddLevelConversionPattern(LevelConversionPattern levelLayout) { m_levelToPatternLayout[levelLayout.Level] = new PatternLayout(levelLayout.ConversionPattern); } } public class LevelConversionPattern { public Level Level { get; set; } public string ConversionPattern { get; set; } } ----- Original Message ---- From: koger <kars...@f-kousgaard.dk> To: log4net-user@logging.apache.org Sent: Thursday, June 18, 2009 8:27:26 AM Subject: Log4net: context only for exception Hi I also posted this question at http://stackoverflow.com/questions/1011730/log4net-context-only-for-exception http://stackoverflow.com/questions/1011730/log4net-context-only-for-exception . But I think this might be a better place. Here is the question: I'm looking for a way to collect a set of data, that will only be used for debugging, the data should only be logged if I log an exception. AFAIK it can happend when ILog.Error, Fatal or Debug with an exception argument when logging other data with an exception, the data shouldn't be logged. I plan to use the GlobalContext or ThreadContext for building the dataset. My idea was to hook into Log4Net and attach to an event I would imagine, to alter the message pattern to include contexts. But I can't find any event that would help me, perhaps there also might be a easier way? What do you think about the overall design of this, am I on the right track or am I missing something? If this way is good, how can I implement it? -- View this message in context: http://www.nabble.com/Log4net%3A-context-only-for-exception-tp24091804p24091804.html Sent from the Log4net - Users mailing list archive at Nabble.com.