Skip to main content
 首页 » 编程设计

c#之使用 Log4Net 的 Spring.Net 日志记录不起作用

2024年02月24日24qq号

我在使用 Log4Net 获取 Spring.Net 日志时遇到了问题。我特别有兴趣查看有关方面的日志记录。我使用的是一个非常简单的日志配置,类似于 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。

有没有其他人遇到过他们能够解决的这个问题?非常感谢您的帮助,干杯。

请您参考如下方法:

正如 Erich 所说,您需要配置 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 的快速指南:

在 lib 文件夹中添加 Common.Logging 和 Common.Logging.Log4Net 程序集(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 得到调试消息。