时间: 2018/09/29 09:02:08
开发windows服务,除了在vs里新建服务项目外(之前有写过具体开发方法,可点击查看),还可以使用Topshelf。
不过使用topshelf需要.netframework 4.5.2版本,在vs2013上引用不成功,我这里使用的是vs2017。
以下为具体步骤:
using log4net; using System; using System.IO; using System.Reflection; using System.Timers; using Topshelf; namespace TopshelfTest { public class TestWriteLog { readonly Timer _timer; ILog _log = LogManager.GetLogger(typeof(TestWriteLog)); public TestWriteLog() { _timer = new Timer(1000) { AutoReset = true, Enabled = true }; int i = 0; _timer.Elapsed += delegate (object sender, System.Timers.ElapsedEventArgs e) { i++; _log.Info("测试" + i.ToString()); }; } public void Start() { _log.Info("Service is Started"); _timer.Start(); } public void Stop() { _log.Info("Service is Stopped"); _timer.Stop(); } ////// 应用程序的主入口点。 /// static void Main() { HostFactory.Run(c => { c.Service ((x) => { x.ConstructUsing(name => new TestWriteLog()); x.WhenStarted((t) => t.Start()); x.WhenStopped((t) => t.Stop()); }); c.RunAsLocalSystem(); //服务描述 c.SetDescription("TestServices测试服务描述"); //服务显示名称 c.SetDisplayName("TestServices测试服务显示名称"); //服务的真实名称 c.SetServiceName("TestServices"); }); } } }
4.1 使用以上方法引用log4net.dll
4.2 在app.config 里作如下配置
"log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> "ALL" /> ref ref="SysAppender" /> "WebLogger"> "log" /> "SysAppender" type="log4net.Appender.RollingFileAppender,log4net"> "Logslog" /> "AppendToFile" value="true" /> "RollingStyle" value="Date" /> "DatePattern" value="yyyyMMdd".txt"" /> "StaticLogFileName" value="false" /> "log4net.Layout.PatternLayout,log4net"> "ConversionPattern" value="%d [%t] %-5p %c - %m%n" /> "consoleApp" type="log4net.Appender.ConsoleAppender,log4net"> "log4net.Layout.PatternLayout,log4net"> "ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
4.3 在properties的AssemblyInfo.cs里 加如下配置
[assembly: log4net.Config.XmlConfigurator(ConfigFileExtension = "config", Watch = true)]
生成项目后可以将bindebug里的内容拷出来单独放服务的位置,
使用管理员运行cmd,cd到你的服务文件位置,我这里直接在debug里安装服务的。
服务.exe install -----安装服务
在服务里就可以看到安装的服务了
服务.exe uninstall -----卸载服务
7、运行结果
在安装服务后开启服务