使用Topshelf开发Windows服务、记录日志
程序员文章站
2023-03-25 17:54:04
开发windows服务,除了在vs里新建服务项目外(之前有写过具体开发方法,可点击查看),还可以使用Topshelf。 不过使用topshelf需要.netframeword 4.5.2版本,在vs2013上引用不成功,我这里使用的是vs2017。 以下为具体步骤: 一、引用topshelf 并使用 ......
开发windows服务,除了在vs里新建服务项目外(之前有写过具体开发方法,可点击),还可以使用topshelf。
不过使用topshelf需要.netframeword 4.5.2版本,在vs2013上引用不成功,我这里使用的是vs2017。
以下为具体步骤:
一、引用topshelf 并使用
1、在vs里新建控制台程序
2、在引用里使用nuget搜索topshelf并安装
3、程序代码
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(); } /// <summary> /// 应用程序的主入口点。 /// </summary> static void main() { hostfactory.run(c => { c.service<testwritelog>((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、log4net引用和配置方法
4.1 使用以上方法引用log4net.dll
4.2 在app.config 里作如下配置
<configsections> <section name="log4net" type="log4net.config.log4netconfigurationsectionhandler, log4net" /> </configsections> <log4net> <!-- off, fatal, error, warn, info, debug, all --> <!-- set root logger level to error and its appenders --> <root> <level value="all" /> <appender-ref ref="sysappender" /> </root> <!-- print only messages of level debug or above in the packages --> <logger name="weblogger"> <level value="log" /> </logger> <appender name="sysappender" type="log4net.appender.rollingfileappender,log4net"> <!--<param name="file" value="app_data/" />--> <file value="logs\log" /> <!--日志文件位置和文件名--> <param name="appendtofile" value="true" /> <param name="rollingstyle" value="date" /> <!--<param name="datepattern" value=""logs_"yyyymmdd".txt"" />--> <param name="datepattern" value="yyyymmdd".txt"" /> <!--在文件名后面加内容 比如 log名变为log20180808--> <param name="staticlogfilename" value="false" /> <layout type="log4net.layout.patternlayout,log4net"> <param name="conversionpattern" value="%d [%t] %-5p %c - %m%n" /> </layout> </appender> <appender name="consoleapp" type="log4net.appender.consoleappender,log4net"> <layout type="log4net.layout.patternlayout,log4net"> <param name="conversionpattern" value="%d [%t] %-5p %c - %m%n" /> </layout> </appender> </log4net>
4.3 在properties的assemblyinfo.cs里 加如下配置
[assembly: log4net.config.xmlconfigurator(configfileextension = "config", watch = true)]
5、生成项目
生成项目后可以将bin\debug里的内容拷出来单独放服务的位置,
6、安装、卸载服务
使用管理员运行cmd,cd到你的服务文件位置,我这里直接在debug里安装服务的。
服务.exe install -----安装服务
在服务里就可以看到安装的服务了
服务.exe uninstall -----卸载服务
7、运行结果
在安装服务后开启服务
上一篇: 第5章 MapReduce操作
下一篇: 我用‘动听’造句
推荐阅读
-
windows service使用log4net 记录日志
-
Powershell使用WINDOWS事件日志记录程序日志
-
使用Topshelf组件构建简单的Windows服务
-
使用Topshelf开发Windows服务、记录日志
-
使用C#创建windows服务续之使用Topshelf优化Windows服务
-
Windows Phone 实用开发技巧(22):使用日志记录当前信息与异常信息
-
使用Topshelf创建Windows服务
-
Windows服务使用log4net记录日志
-
使用C#开发windows服务定时发消息到钉钉群_群组简单消息
-
ASP.NET Core使用TopShelf部署Windows服务