inicjalizacja log4net

Trudno mi było znaleźć duplikaty, ale muszę zadać następujące pytania, bez względu na to, jak może się to wydawać podstawowe, aby wyjaśnić to raz na zawsze!

W nowej aplikacji Console używającej log4net w wersji 1.2.10.0 na VS28KSP1 w 64-bitowym W7 mam następujący kod: -

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");
        }
    }
}

W moimapp.config, Mam:

<?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>

To nic nie pisze, chyba że dodam atrybut:

[ assembly:XmlConfigurator ]

Lub jawnie zainicjuj go w Main ():

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

Rodzi to następujące pytania:

Jestem prawie pewien, że widziałem go działającego gdzieś w jakiejś wersji log4net bez dodania atrybutu zespołu lub wywołania w Main. Czy ktoś może mnie zapewnić, że nie wyobrażam sobie tego?Czy ktoś może mi wskazać, gdzie w dokumencie wyraźnie stwierdza się, że wymagana jest zarówno sekcja config, jak i hak inicjujący - mam nadzieję, że z wyjaśnieniem, kiedy to się zmieniło, jeśli tak się stało?

Mogę sobie łatwo wyobrazić, dlaczego to może być polityka - po wyraźnym kroku inicjalizacji, aby uniknąć niespodzianek itp., Wydaje mi się, że pamiętam, że nie zawsze tak jest ... (I normalnie mam konfigurację w osobnym pliku , która zazwyczaj wykonuje konfiguracje poza obrazem)

questionAnswers(1)

yourAnswerToTheQuestion