views:

143

answers:

2

Is it possible to set the logger from configuration. I have a web app using a framework. The framework is extensible and has the logger. When I log, currently, the logger is set to the framework class.

Is it possible that I can configure my web app and set the logger for the web app to loggerForWebApp and the logger for a console app (which is using the same framework) to loggerForConsoleApp?

A: 

Most definitely, and this is one of the great things about log4net: it can log out to a wide range of loggers.

For examples of the appenders, see here. Probably the most common one in use is the RollingFileAppender, but the ConsoleAppender can be very handy for console applications. Alternatively the TraceAppender can write out to the standard .NET trace listeners for further redirection (or display in the debug Output window in Visual Studio).

To create your own, implement IAppender.

details to follow

Jeremy McGee
@Ram is not asking about appenders, he is asking about loggers. Two separate things in the log4net world.
Peter Lillevold
+1  A: 

In addition to the root logger (which must always be there) you can have named loggers with their own appender-refs and levels.

For instance, you could have something like this:

<root>
....
</root>

<logger name="loggerForWebApp">
    <level value="WARN" />
    <appender-ref ... />
</logger>

<logger name="loggerForConsoleApp">
    <level value="WARN" />
    <appender-ref ... />
</logger>

In code, you would summon these loggers by their name:

var log = LogManager.GetLogger("loggerForWebApp");
Peter Lillevold