Ведение журнала Spring.Net с Log4Net не работает

Мне не удается зарегистрировать Spring.Net с помощью Log4Net. Я особенно заинтересован в том, чтобы увидеть журналы вокруг Аспектов. Я использую довольно простую конфигурацию журнала, похожую на пример приложения MovieFinder:

...
<logger name="Spring">
  <level value="DEBUG" /> <!-- Have tried INFO as well, no different -->
  <appender-ref ref="SpringAppender"/>
</logger> 

<appender name="SpringAppender" type="log4net.Appender.RollingFileAppender">
  <file value="..\Log\Spring_Log.txt"/>
  <appendToFile value="true"/>
  <maximumFileSize value="100MB"/>
  <maxSizeRollBackups value="2"/>
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%date %-5level [%thread] %logger - %message%newline"/>
  </layout>
</appender>
...

Файл "Spring_Log.txt" создается, но в него ничего не регистрируется (т.е. пустой файл). Log4Net в настоящее время правильно ведет журнал для NHibernate и нашего пользовательского приложения. Я использую Spring.Net v1.2.0.20313 и Log4Net v1.2.10.0.

У кого-нибудь еще была эта проблема, которую они смогли решить? Большое спасибо за любую помощь, ура.


person JonoW    schedule 07.04.2009    source источник


Ответы (2)


Как сказал Эрих, вам нужно настроить Common.Logging. Ваш файл конфигурации log4net в порядке. Вот что у меня получилось с помощью вашего файла конфигурации:

2009-05-02 19:08:40,890 DEBUG [10] Spring.Objects.Factory.Support.AbstractObjectDefinitionReader - Loading XML object definitions from config [C:\Documents and Settings\pczapla\My Documents\Visual Studio 2008\Projects\TimeLogger\TimeLogger\bin\Debug\TimeLogger.exe.config#spring/objects]
2009-05-02 19:08:40,905 DEBUG [10] Spring.Objects.Factory.Support.AbstractObjectDefinitionReader - Using the following XmlReader implementation : System.Xml.XsdValidatingReader
2009-05-02 19:08:40,921 DEBUG [10] Spring.Objects.Factory.Xml.DefaultObjectDefinitionDocumentReader - Loading object definitions.
2009-05-02 19:08:40,921 DEBUG [10] Spring.Objects.Factory.Xml.ObjectDefinitionParserHelper - Loading object definitions...

Вот краткое руководство по настройке Common.Logging:

Добавьте сборки Common.Logging и Common.Logging.Log4Net, которые поставляются вместе с spring, в папку lib (C:\Program Files\Spring.NET 1.2.0\lib\Net\2.0\). Затем добавьте в свой app.config следующую конфигурацию:

<configuration>
    </configSections>
        ...
        <sectionGroup name="common">
            <section name="logging" type="Common.Logging.ConfigurationSectionHandler, Common.Logging" />
        </sectionGroup>
    </configSections>
    ...
    <common>
        <logging>
            <factoryAdapter type="Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter, Common.Logging.Log4net">
                <!-- Common Logging assumes that log4net is initialized -->
                <arg key="configType" value="EXTERNAL"/>
                <!-- Or it can configure log4net for you
                <arg key="configType" value="FILE-WATCH" />
                <arg key="configFile" value="path\to\your\log4net.config" />
                -->
            </factoryAdapter>
        </logging>
    </common>
</configuration>

Вот и все. Теперь вы должны получать отладочные сообщения от spring.

person Piotr Czapla    schedule 02.05.2009

Spring.NET использует Common.Logging. Вы настроили Common.Logging для входа в log4net? См. Документацию http://netcommon.sourceforge.net/documentation.html

hth, Эрих

person Erich Eichinger    schedule 27.04.2009