Search code examples
c#.netlog4netapplication-start

log4net Configuration for console app


can anyone suggest how to configure the log4net for an console app?

Or at least how/where to catch the Application_Start event? (It seams that some calls are required at this moment)

Thanks in advance!


Solution

  • You need to configure it before the first logger is instantiated.

    To do so:

    • Your main class (Program.cs) should not have a logger

    • The main method should not reference any classes that have a logger.

    • You can then configure log4net in the main method.

    Alternatively you can use a wrapper class to instantiate loggers, that ensures log4net is configured before creating a logger, e.g.:

    static class Log4NetHelper
    {
        private static bool _isConfigured;
    
        static void EnsureConfigured()
        {
            if (!_isConfigured)
            {
                ... configure log4net here ...
                _isConfigured = true;
            }
        }
    
        public static ILog GetLogger(string name)
        {
            EnsureConfigured();
            log4net.ILog logger = log4net.LogManager.GetLogger(name);
            return logger;
        }
    }