Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Have log4net use application config file for configuration data

I would like to store log4net config data in my application.config file. Based on my understanding of the documentation, I did the following:

  1. Add a reference to log4net.dll

  2. Add the following line in AssemblyInfo.cs:

    [assembly: log4net.Config.XmlConfigurator(Watch = true)]
    
  3. Initialize the logger as follows:

    private static readonly ILog log = LogManager.GetLogger(typeof(frmWizard));
    
  4. I have the following code in my app.config:

    <configSections>
      <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
    </configSections>
    <log4net>
      <appender name="EventLogAppender" type="log4net.Appender.EventLogAppender" >
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
        </layout>
      </appender>
      <root>
        <level value="INFO" />
        <appender-ref ref="ConsoleAppender" />
      </root>
    </log4net>

However, when I run the application, I get the following error on the console:

No appender named [Consoleappender] could be found.

How can I get log4net to read settings from the config file?

Thanks!

like image 270
laconicdev Avatar asked Dec 16 '08 21:12

laconicdev


People also ask

Where is log4net configuration file?

You can configure the log4net. config file to create log files. The file is located in the webroot\App_data directory of the installation.

Is log4net dependent on log4j?

log4net is a port of the popular Apache log4j™ logging library. The initial port was done in June 2001, since then we have tried to remain in the spirit of the original log4j. See the log4net history page for more details.

What is rolling file Appender in log4net?

RollingFileAppender means the system creates a log file based on your filters, this way you can have log files based on dates (one file each day), or get the file splitted into small chunks when it hits certain size.


2 Answers

Add a line to your app.config in the configSections element

<configSections>  <section name="log4net"     type="log4net.Config.Log4NetConfigurationSectionHandler, log4net, Version=1.2.10.0,           Culture=neutral, PublicKeyToken=1b44e1d426115821" /> </configSections> 

Then later add the log4Net section, but delegate to the actual log4Net config file elsewhere...

<log4net configSource="Config\Log4Net.config" /> 

In your application code, when you create the log, write

private static ILog GetLog(string logName) {     ILog log = LogManager.GetLogger(logName);     return log; } 
like image 164
Charles Bretana Avatar answered Oct 02 '22 19:10

Charles Bretana


From the config shown in the question there is but one appender configured and it is named "EventLogAppender". But in the config for root, the author references an appender named "ConsoleAppender", hence the error message.

like image 24
Konstantin Avatar answered Oct 02 '22 18:10

Konstantin