Well, I tried this and it still does not work:
if (AllocConsole()) AttachConsole(-1); // this file exists.... XmlConfigurator.ConfigureAndWatch(new System.IO.FileInfo("./Log4Net.config")); LogManager.GetLogger("DebugLogger").Debug("message"); My config file: <?xml version="1.0" encoding="utf-8" ?> <log4net> <appender name="DebugConsoleAppender" type="log4net.Appender.ColoredConsoleAppender"> <threshold value="ALL"/> <mapping> <level value="FATAL" /> <foreColor value="White" /> <backColor value="Red, HighIntensity" /> </mapping> <mapping> <level value="ERROR" /> <backColor value="Red, HighIntensity" /> </mapping> <mapping> <level value="WARN" /> <backColor value="Yellow, HighIntensity" /> </mapping> <mapping> <level value="DEBUG" /> <backColor value="Green" /> </mapping> <mapping> <level value="INFO" /> <foreColor value="White" /> </mapping> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%ndc %date %-4timestamp %-5level - %message %newline%exception " /> </layout> </appender> <root> <level value="ALL" /> </root> <logger name="DebugLogger"> <level value="ALL"/> <appender-ref ref="DebugConsoleAppender"/> </logger> </log4net> Thanks for your help ! Michael 2009/6/26 Michael SALOMON <michaelsalomo...@gmail.com> > thx for your answer ! i'll try that but then I need to change my approach. > > Originally I wanted to attach a console depending on log4net config, so now > i will try to detach the console depending on the config ;) > > I don't mind doing that > > I'll let you know if it works. > > 2009/6/26 Radovan Raszka <ras...@hasam.cz> > > Hello, >> try to allocate your console _before_ log4net is configured. >> Radovan >> ------------------------------ >> *Od:* Michael SALOMON [mailto:michaelsalomo...@gmail.com] >> *Odesláno:* 26. června 2009 15:22 >> *Komu:* log4net-user@logging.apache.org >> *Předmět:* Problem using a ConsoleAppender in a Windows Form application >> >> Hi ! >> >> I'm using log4net 1.2.10.0 and .NET 2.0 >> >> I wrote a Windows Form application and I want to be able to log debug >> messages in a ColoredConsoleAppender (or whatever type of Console appender). >> >> If I compile my application as a Console Application, this works fine... >> If I compile it as a Windows Forms application, then I understand that no >> console is attached to my application, fair enough.. >> >> In this case I programmaticaly attach a brand new console by using this >> piece of code : >> >> [DllImport("kernel32.dll", SetLastError = true)] >> [return: MarshalAs(UnmanagedType.Bool)] >> static extern bool AllocConsole(); >> >> [DllImport("kernel32.dll", SetLastError = true)] >> [return: MarshalAs(UnmanagedType.Bool)] >> static extern bool FreeConsole(); >> >> [DllImport("kernel32.dll", SetLastError = true)] >> private static extern bool AttachConsole(int dwProcessId); >> >> public static void SetConsole() >> { >> foreach (log4net.Appender.IAppender appender in >> log4net.LogManager.GetRepository().GetAppenders()) >> { >> System.Type type = appender.GetType(); >> >> if ((type == >> typeof(log4net.Appender.ColoredConsoleAppender)) >> || (type == typeof(log4net.Appender.ConsoleAppender))) >> { >> if (AllocConsole()) >> AttachConsole(-1); >> >> return; >> } >> } >> >> So at startup, if any console appender is found, I attach a console... >> >> At this stage, I can do things like : Console.WriteLine() , and it works >> very fine, I can see the messages in my new console... >> >> But for some reason, the Console Appenders do not forward their messages >> to this console... >> >> Do I miss something or do something wrong ? >> >> I tried to create a custom appender that inherits ConsoleAppender and do >> something like: >> >> protected override void Append (LoggingEvent loggingEvent) >> { >> Console.WriteLine (RenderLoggingEvent(loggingEvent); >> } >> >> This works fine with my attached console, but I loose all the nice colored >> features... And fact is I do want them :) >> >> Thanks a lot for your help >> >> Michael >> > >