我使用TopShelf创建了一个Windows 服务,使用Log4Net添加了日志记录,然后构建了项目,安装了服务并启动了服务。然后我的服务运行良好,但没有记录。该TopShelf日志出现,但不是我的日志添加到我的Windows服务。更奇怪的是,如果我重新启动Windows Service,日志记录开始工作。我已经创建了一个小项目的GitHub 存储库,如果你想克隆它并自己重现问题,它会重现这个问题。如何判断它是否有效该服务应创建两个文件,一个只显示“Hello World”,另一个包含所有日志。如果日志文件成功记录了该行,它将起作用:Why is this line not logged?如果该行没有出现在log.txt文件中,那么我的问题没有解决。注意:如果您单击Visual Studio 中的开始按钮,则会显示此行,但我希望它在安装服务并启动服务时工作。如果服务启动,然后重新启动,它也可以工作,但这似乎更像是一个黑客而不是修复。项目描述这就是我设置服务的方式。我使用.Net Framework 4.6.1创建了一个新的C# 控制台应用程序并安装了 3 个NuGet包:<?xml version="1.0" encoding="utf-8"?><packages> <package id="log4net" version="2.0.8" targetFramework="net461" /> <package id="Topshelf" version="4.0.4" targetFramework="net461" /> <package id="Topshelf.Log4Net" version="4.0.4" targetFramework="net461" /></packages>然后我创建了Windows 服务:using log4net.Config;using System.IO;using Topshelf;using Topshelf.HostConfigurators;using Topshelf.Logging;using Topshelf.ServiceConfigurators;namespace LogIssue{ public class Program { public const string Name = "LogIssue"; public static void Main(string[] args) { XmlConfigurator.Configure(); HostFactory.Run(ConfigureHost); } private static void ConfigureHost(HostConfigurator x) { x.UseLog4Net(); x.Service<WindowsService>(ConfigureService); x.SetServiceName(Name); x.SetDisplayName(Name); x.SetDescription(Name); x.RunAsLocalSystem(); x.StartAutomatically(); x.OnException(ex => HostLogger.Get(Name).Error(ex)); }
2 回答
- 2 回答
- 0 关注
- 197 浏览
添加回答
举报
0/150
提交
取消