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 >