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
>

Reply via email to