Daniel Marohn wrote:
>
> Hi!
>
> ...
> Someone else might have an application that they would like to send
> DEBUG messages to the FileAppender
> even though my application may only send FATAL
> ...
>
> this is, why you have different logger.
> from your first post:
>
> <logger name="Invoicing">
> ...
> </logger>
>
> <logger name="Invoicing">
> ...
> </logger>
>
>
Yes, that *is* why I am doing that
Daniel Marohn wrote:
>
>
> this makes no sense. You configure the logger 'Invoicing' and later
> you configure the SAME logger with different properties. How do you
> want to access these 'two' loggers from your code?
> LogManger.GetLogger("Invoicing, but please first version") ? ;-)
>
log4net is intelligent enough to handle this.
When you call :
log4net.LogManager.GetLogger(loggerName).Debug(message, exception);
or
log4net.LogManager.GetLogger(loggerName).Error(message, exception);
It will use the logger defined with value="DEBUG"
But, when you call
log4net.LogManager.GetLogger(loggerName).Fatal(message, exception);
log4net will use the logger defined with value="FATAL"
This allows me to use the same loggerName throughout my application, and
have FATAL messages logged in a different manner. FATAL messages are more
urgent and require immediate attention for this I will be using an
SnmpAppender that will send the messages directly to our critical problem
monitoring system.
Daniel Marohn wrote:
>
> You can do this:
>
> <appender name="consoleTestAppender"
> type="log4net.Appender.ConsoleAppender" >
> <layout type="log4net.Layout.PatternLayout">
> <conversionPattern value="%date %-5level %logger - %message%newline"
> />
> </layout>
> </appender>
>
> <logger name="Invoicing.Application1">
> <level value="ERROR" />
> <appender-ref ref="consoleTestAppender" />
> </logger>
>
> <logger name="Invoicing.Application2">
> <level value="WARN" />
> <appender-ref ref="consoleTestAppender" />
> </logger>
>
> now you have two different loggers (one for each app), using the same
> appender. And you can set the Level per Logger.
>
>
The invoicing application is a single application. If I were to define
multiple loggers with different names I might do something like this
instead:
<logger name="Invoicing.Logger1">
<level value="FATAL" />
<appender-ref ref="consoleTestAppender" />
</logger>
<logger name="Invoicing.Logger2">
<level value="WARN" />
<appender-ref ref="consoleTestAppender" />
</logger>
The problem here is I am trying to send my critical errors to Snmp, so in my
code I would have to remember the logger name I am using for critical errors
(in this case Invoicing.Logger1). It is much simpler to just have to
remember to call ".Fatal" when I have a critical error and not have to
remember the loggername that was meant to handle fatal errors.
--
View this message in context:
http://www.nabble.com/Error-destroying-my-productivity-Please-Help%21%3A-log4net%3AERROR----Attempted-to-append-to-closed-appender-named----tp22939427p22953058.html
Sent from the Log4net - Users mailing list archive at Nabble.com.