Hi !!

I truely apologize for this late answer!

This works great for me !! Thanks so much for your help, log4net definitely
rocks !

Regards

michael

On Sat, Jun 27, 2009 at 2:06 AM, Ron Grabowski <rongrabow...@yahoo.com>wrote:

> This works for me:
>
> public partial class Form1 : Form
> {
>     [DllImport("kernel32.dll", SetLastError = true)]
>     [return: MarshalAs(UnmanagedType.Bool)]
>     static extern bool AllocConsole();
>
>     [DllImport("kernel32.dll", SetLastError = true)]
>     private static extern bool AttachConsole(int dwProcessId);
>
>     public Form1()
>     {
>         InitializeComponent();
>
>         if (AllocConsole())
>             AttachConsole(-1);
>
>         var appender = new ColoredConsoleAppender();
>         var mapping = new ColoredConsoleAppender.LevelColors
>         {
>             Level = Level.Debug,
>             ForeColor = ColoredConsoleAppender.Colors.Red,
>             BackColor = ColoredConsoleAppender.Colors.Blue
>         };
>         appender.AddMapping(mapping);
>         appender.ActivateOptions();
>         appender.Layout = new SimpleLayout();
>         BasicConfigurator.Configure(appender);
>
>         ILog log = LogManager.GetLogger(typeof(Form1));
>         log.Debug("Hello World");
>     }
> }
>
> ------------------------------
> *From:* Michael SALOMON <michaelsalomo...@gmail.com>
> *To:* Log4NET User <log4net-user@logging.apache.org>
> *Sent:* Friday, June 26, 2009 1:18:49 PM
> *Subject:* Re: Problem using a ConsoleAppender in a Windows Form
> application
>
> 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
>>>
>>
>>
>

Reply via email to