logging-log4net-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Michael SALOMON <michaelsalomo...@gmail.com>
Subject Re: Problem using a ConsoleAppender in a Windows Form application
Date Fri, 26 Jun 2009 17:18:49 GMT
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 <michaelsalomon78@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 <raszka@hasam.cz>
>
>  Hello,
>> try to allocate your console _before_ log4net is configured.
>> Radovan
>>  ------------------------------
>> *Od:* Michael SALOMON [mailto:michaelsalomon78@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
>>
>
>

Mime
View raw message