我正在尝试为我的 Windows 服务创建一个简单的文件记录器,但没有写入该文件。这是我的 app.config 文件:
<?xml version="1.0"?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<connectionStrings>
<add name="MyAppConnectionString" connectionString="Data Source=.;Initial Catalog=MyApp;Integrated Security=True;MultipleActiveResultSets=True" />
<add name="MyAppEntities" connectionString="metadata=res://*/MyAppModel.csdl|res://*/MyAppModel.ssdl|res://*/MyAppModel.msl;provider=System.Data.SqlClient;provider connection string="Data Source=.;Initial Catalog=MyApp;Integrated Security=True;MultipleActiveResultSets=True"" providerName="System.Data.EntityClient" />
</connectionStrings>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
<system.web>
<roleManager enabled="true" defaultProvider="MyAppSqlRoleProvider">
<providers>
<add name="MyAppSqlRoleProvider"
type="System.Web.Security.SqlRoleProvider"
applicationName="MyApp"
connectionStringName="MyAppConnectionString"/>
</providers>
</roleManager>
</system.web>
<log4net>
<appender name="FileAppender" type="log4net.Appender.FileAppender">
<file value="C:/logfiles/MyAppAlarms.txt" />
<appendToFile value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %message%newline" />
</layout>
</appender>
<root>
<level value="ALL" />
<appender-ref ref="FileAppender" />
</root>
</log4net>
</configuration>
我知道还有其他类似的帖子,但我已经阅读了它们并尝试了其中的所有内容,但我无法到达任何地方。我尝试将上面相同的标签放在控制台应用程序中并且有效。我尝试将我的 app.config 复制并粘贴到 C:\ 驱动器并在我的 AssemblyInfo.cs 中使用它来引用它:
[程序集:log4net.Config.XmlConfigurator(Watch = true, ConfigFile = @"C:\app.config")]
但这没有用。我能够使用调试器附加到服务,但我不确定如何在这里利用它来发挥我的优势。没有什么是抛出异常。我尝试使用 StreamWriter 写入同一个文件并且有效,所以我知道这不是写权限问题。
我不知道下一步该尝试什么。有没有办法获得一些调试信息,以便找出问题所在?我尝试启用内部调试并运行 DebugView,但除了低级网络消息外,我什么也没看到。我也尝试设置 log4net debug=true,但我认为这会写入控制台,这对服务没有帮助。