【发布时间】:2017-03-03 00:29:45
【问题描述】:
我对如何在 Windows 服务项目中配置 log4net 感到非常困惑。除此之外,我是 Visual Studio 配置的新手。所以,我创建了这个 Windows 服务应用程序,我想将 log4net 添加到它。所有说明都不同,一个答案据说包括以下行到程序集信息。另一个答案是将其添加到 AssemblyInfo.cs(在您的 App_Code 文件夹中)。那么这是否意味着我需要在源文件夹中添加一个名为 AssemblyInfo.cs 的类,然后在构造函数中添加这一行? 我不知道那是什么意思!
[assembly:log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]
我已将 appSettings 添加到我的 app.config 文件中:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<appSettings>
<add key="log4net.Internal.Debug" value="true"/>
</appSettings>
</configuration>
我还需要创建 log4net.config 文件吗?
我尝试按照this questions 的指示进行操作,但没有足够的信息对我有意义。我花了几个小时寻找有意义的说明。有人可以告诉我(高层次)为 Windows 服务应用程序配置 log4net 的步骤吗?我需要创建哪些文件;我需要添加哪些配置;我知道我需要创建一个记录器类,但配置让我完全困惑。
------------------编辑---------- ------------------------
第 1 步) 我的 app.config 如下所示:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net"/>
</configSections>
<log4net>
<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="log.log" />
<appendToFile value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="5" />
<maximumFileSize value="100KB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %level %logger - %message %exception%newline" />
</layout>
</appender>
<root>
<level value="ALL" />
<appender-ref ref="LogFileAppender" />
</root>
</log4net>
</configuration>
第 2 步)我已将其添加到 Program.cs 主目录中:
using System;
using System.Collections.Generic;
using System.Linq;
using System.ServiceProcess;
using System.Text;
using System.Threading.Tasks;
[assembly: log4net.Config.XmlConfigurator(Watch = true)]
namespace MyAppService
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
static void Main()
{
log4net.Config.XmlConfigurator.Configure();
第 3 步)我添加了对 log4net 的引用
第 4 步)在我正在记录的课程中,我添加了以下内容:
private static ILog logger = LogManager.GetLogger(typeof(Reader));
第 4 步)我添加了如下日志语句:
logger.Info("Data Read Completed Successfully.");
【问题讨论】:
-
我觉得跟具体的平台、服务没有关系,都是一样的。您是否尝试证明它在控制台应用程序中有效?
标签: c# windows service log4net-configuration