我使用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 回答
- 0 關注
- 212 瀏覽
添加回答
舉報
0/150
提交
取消