C# Log4Net未写入输出文件

C# Log4Net未写入输出文件,c#,windows-services,log4net,C#,Windows Services,Log4net,我在让log4net与Windows服务(多项目解决方案)一起工作时遇到了严重的问题 我首先通过NuGet将对log4net.dll的引用添加到适当的项目中。然后,我在Windows服务项目的根文件夹中创建了一个新的Log4Net.config文件。在文件的属性中,我设置了Copy to Output Directory=Copy always。下面是配置文件: <?xml version="1.0"?> <configuration> <log4net&g

我在让log4net与Windows服务(多项目解决方案)一起工作时遇到了严重的问题

我首先通过NuGet将对log4net.dll的引用添加到适当的项目中。然后,我在Windows服务项目的根文件夹中创建了一个新的
Log4Net.config
文件。在文件的属性中,我设置了
Copy to Output Directory=Copy always
。下面是配置文件:

<?xml version="1.0"?>
<configuration>
    <log4net>
        <appender name="TestServiceLog" type="log4net.Appender.RollingFileAppender">
            <file value="C:\Temp\Test.log" />
            <appendToFile value="true" />
            <rollingStyle value="Size" />
            <maxSizeRollBackups value="100" />
            <maximumFileSize value="10MB" />
            <layout type="log4net.Layout.PatternLayout">
                <conversionPattern value="%date [%thread] %level %logger - %message%newline" />
            </layout>
        </appender>
        <root>
            <level value="INFO" />
            <priority value="ALL" />
            <appender-ref ref="TestServiceLog" />
        </root>
    </log4net>
</configuration>
在我的主
TestService.cs
类中,我引用了log4net并像这样初始化了记录器(省略了非日志代码):

然后我安装并运行了该服务。我验证了服务是否正常运行,但没有创建/写入日志文件。没有抛出异常。调试时,一切都井然有序。我打开了log4net的内部调试,得到了以下结果:

log4net: Creating repository for assembly [TestService, Version=3.6.5570.17497, Culture=neutral, PublicKeyToken=null]
log4net: Assembly [TestService, Version=3.6.5570.17497, Culture=neutral, PublicKeyToken=null] Loaded From [C:\ProgramData\Company\Applications\TestService\TestService\TestService.exe]
log4net: Assembly [TestService, Version=3.6.5570.17497, Culture=neutral, PublicKeyToken=null] does not have a RepositoryAttribute specified.
log4net: Assembly [TestService, Version=3.6.5570.17497, Culture=neutral, PublicKeyToken=null] using repository [log4net-default-repository] and repository type [log4net.Repository.Hierarchy.Hierarchy]
log4net: repository [log4net-default-repository] already exists, using repository type [log4net.Repository.Hierarchy.Hierarchy]
输出似乎没有提示任何问题。我还尝试将以下行添加到我的配置中,但没有成功:

<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" requirePermission="false"/>


我在解决方案中添加了一个WinForms项目,配置和日志记录都完全相同,所以我相信这不是我的设置。关于我可能错过的步骤还有其他想法吗

通过使
Log
变量为静态变量并将其实例化如下,我能够使其工作:

private static ILog Log = LogManager.GetLogger(typeof(TestService));
我不太清楚为什么这是必要的。希望其他人知道答案

<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" requirePermission="false"/>
private static ILog Log = LogManager.GetLogger(typeof(TestService));