log4net日志文件在生产中为空,而不是在开发中

时间:2011-09-13 15:01:57

标签: c#-4.0 .net-4.0 windows-services log4net

对于用C#4编写的Windows服务,我配置了log4net并且在开发中工作正常。但不是在生产中。

这是我的配置:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
        <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
    </configSections>

    <log4net>
        <appender name="FileAppender" type="log4net.Appender.RollingFileAppender">
            <file value="Logs/Log.xml"/>
            <appendToFile value="true"/>
            <rollingStyle value="Size"/>
            <maxSizeRollBackups value="10"/>
            <maximumFileSize value="100MB"/>
            <layout type="log4net.Layout.XmlLayout">
                <param name="Prefix" value=""/>
            </layout>
        </appender>

        <root>
            <level value="ALL"/>
            <appender-ref ref="FileAppender"/>
        </root>
    </log4net>
</configuration>

在我的AssemblyInfo.cs内:

[assembly: log4net.Config.XmlConfigurator(Watch = true)]

当我在本地运行应用程序时,会按预期将内容写入日志。当我在服务器上运行它时,日志文件以正确的路径创建,但它仍然为空。没有一个字符写入日志。

显然我的配置正在被拾取,因为文件位于正确的位置并具有适当的扩展名。

3 个答案:

答案 0 :(得分:1)

作为一种解决方法,我从程序集中删除了[assembly: log4net.Config.XmlConfigurator(Watch = true)]行,并在应用程序启动时在代码中执行了该操作。

答案 1 :(得分:0)

我刚才遇到了同样的问题并修复了它,[assembly:log4net.Config.XmlConfigurator(Watch = true)]在ninjectwebcommon文件而不是汇编信息中。在我将其移至assemblyinfo后,它开始工作

答案 2 :(得分:-1)

这是一个愚蠢的问题......但你确定你的服务已经正确启动并正在做什么吗?

我会添加控制台appender,也可能是eventlong appender,如果可能的话,尝试将你的服务作为控制台应用程序运行,看看?

我会说,因为正在创建日志文件,所以使用log4net看起来很好......?