инициализация log4net

Я искал дубликаты, но должен спросить следующее, каким бы базовым оно ни казалось, чтобы раз и навсегда разобраться в этом!

В новом консольном приложении, использующем log4net версии 1.2.10.0 на VS28KSP1 на 64-битной W7, у меня есть следующий код: -

using log4net;
using log4net.Config;

namespace ConsoleApplication1
{
    class Program
    {
        static readonly ILog _log = LogManager.GetLogger(typeof(Program));
        static void Main(string[] args)
        {
            _log.Info("Ran");
        }
    }
}

В моемapp.config, Я имею:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
  </configSections>
  <log4net>
    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
      <file value="Program.log" />
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
      <appendToFile value="true" />
      <rollingStyle value="Size" />
      <maxSizeRollBackups value="10" />
      <maximumFileSize value="1MB" />
      <staticLogFileName value="true" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="[%username] %date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
      </layout>
    </appender>

    <root>
      <level value="DEBUG" />
      <appender-ref ref="RollingFileAppender" />
    </root>
  </log4net>

</configuration>

Это ничего не пишет, если я не добавлю атрибут:

[ assembly:XmlConfigurator ]

Или явно инициализируйте его в Main ():

_log.Info("This will not go to the log");
XmlConfigurator.Configure();
_log.Info("Ran");

Это поднимает следующие вопросы:

I'm almost certain I've seen it working somewhere on some version of log4net without the addition of the assembly attribute or call in Main. Can someone assure me I'm not imagining that? Can someone please point me to where in the doc it explicitly states that both the config section and the initialisation hook are required - hopefully with an explanation of when this changed, if it did?

Я легко могу себе представить, почему это может быть политика - наличие явного шага инициализации, чтобы избежать неожиданностей и т. Д., Просто я помню, что это не всегда так ... (И обычно у меня есть конфигурация в отдельный файл, который, как правило, вынимает настройки из картинки)

Ответы на вопрос(1)

Ваш ответ на вопрос