Topshelf创建Windows服务

入门例子

using log4net;
using System;
using System.Timers;
using Topshelf;namespace ConsoleAppTest
{class Program{static void Main(string[] args){log4net.Config.XmlConfigurator.Configure();HostFactory.Run(x =>{x.Service<TownCrier>();x.RunAsLocalSystem(); // 服务使用NETWORK_SERVICE内置帐户运行。身份标识,有好几种方式,如://x.RunAs("username", "password"); x.RunAsPrompt(); x.RunAsNetworkService(); x.SetServiceName("ConsoleAppTest服务名称");x.SetDisplayName("ConsoleAppTest显示名称");x.SetDescription("ConsoleAppTest服务描述");});}}public class TownCrier : ServiceControl{readonly Timer _timer;readonly ILog _log = log4net.LogManager.GetLogger("wolflogInfo");public TownCrier(){//10秒运行一次_timer = new Timer(10000) { AutoReset = true };_timer.Elapsed += (sender, eventArgs) => _log.Info(DateTime.Now);}bool ServiceControl.Start(HostControl hostControl){_log.Info("ConsoleAppTest is Started");_timer.Start();return true;}bool ServiceControl.Stop(HostControl hostControl){_log.Info("ConsoleAppTest is Stop");_timer.Start();return true;}}}

 

Log4的config配置

<?xml version="1.0" encoding="utf-8" ?>
<configuration><configSections><section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/></configSections><startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" /></startup><log4net><logger name="wolflogInfo"><level value="Info" /><appender-ref ref="wolflogInfoFileAppender" /></logger><logger name="wolflogError"><level value="Error" /><appender-ref ref="wolflogErrorFileAppender" /></logger><logger name="wolflogALL"><level value="ALL" /><appender-ref ref="wolflogALLFileAppender" /></logger><!-- 绑定使用的名称 -->  <appender name="wolflogInfoFileAppender" type="log4net.Appender.RollingFileAppender,log4net"><lockingModel type="log4net.Appender.FileAppender+MinimalLock" /><!--输出文件夹路径--><param name="File" type="" value="App_Data/Log/Info/" /><param name="AppendToFile" value="true" /><param name="RollingStyle" value="Date" /><!--文件名称命名规则--><param name="DatePattern" value="yyyyMMdd&quot;.txt&quot;" /><param name="StaticLogFileName" value="false" /><param name="MaxSizeRollBackups" value="62" /><layout type="log4net.Layout.PatternLayout,log4net"><!--输出头--><param name="ConversionPattern" value="%n[%d] %c %n%m%n%n" /></layout></appender><appender name="wolflogErrorFileAppender" type="log4net.Appender.RollingFileAppender,log4net"><lockingModel type="log4net.Appender.FileAppender+MinimalLock" /><param name="File" type="" value="App_Data/Log/Error/" /><param name="AppendToFile" value="true" /><param name="RollingStyle" value="Date" /><param name="DatePattern" value="yyyyMMdd&quot;.txt&quot;" /><param name="StaticLogFileName" value="false" /><param name="MaxSizeRollBackups" value="62" /><layout type="log4net.Layout.PatternLayout,log4net"><param name="ConversionPattern" value="%n[%d] %c %n%m%n%n" /></layout></appender><appender name="wolflogALLFileAppender" type="log4net.Appender.RollingFileAppender,log4net"><lockingModel type="log4net.Appender.FileAppender+MinimalLock" /><param name="File" type="" value="App_Data/Log/ALL/" /><param name="AppendToFile" value="true" /><param name="RollingStyle" value="Date" /><param name="DatePattern" value="yyyyMMdd&quot;.txt&quot;" /><param name="StaticLogFileName" value="false" /><param name="MaxSizeRollBackups" value="62" /><layout type="log4net.Layout.PatternLayout,log4net"><param name="ConversionPattern" value="%n[%d] %c %n%m%n%n" /></layout></appender></log4net>
</configuration>

 

安装运行命令

安装:ConsoleAppTest install
卸载:ConsoleAppTest uninstall
启动:ConsoleAppTest start
停止:ConsoleAppTest stop

需要用管理员运行程序

多实例安装

ConsoleAppTest –instance "ConsoleAppTest2" install
ConsoleAppTest –instance "ConsoleAppTest2" uninstall
也可以 sc delete  删除

 

转载于:https://www.cnblogs.com/lgxlsm/p/8405163.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/428191.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jsp网页中的换行

JSP网页中输出换行在一开始学习的时候困扰了我不短的时间&#xff0c;因为一些排版需要换行总是很难实现&#xff0c;随着学习&#xff0c;找到了如下几种方法做到换行&#xff0c;以保持页面的美观。 代码和截图我给放在下面了&#xff0c;附了注释: 代码如下&#xff0c;想…

npu算力如何计算_CPU、GPU、NPU、FPGA等芯片架构特点分析

来源 | 汽车电子与软件知圈 | 进“高精度地图社群”&#xff0c;请加微信15221054164&#xff0c;备注地图概述随着人工智能的热潮和AI算法的广泛应用&#xff0c;深度学习已成为当前AI研究的重点&#xff0c;在自动驾驶领域&#xff0c;环境感知、传感器融合、控制决策等等都会…

Eclipse——恢复的默认窗口设置篇

你可能也会像我一样&#xff0c;时不时不小心把一些窗口关掉了&#xff0c;然后想要改回来的时候&#xff0c;又要疯狂的去设置里把它们一个个的显示出来&#xff0c;大概率的还可能得百度一下&#xff0c;看着英文单词有时候就会烦躁。 直接崩溃&#xff1a; 这里一招教你直…

翻牌游戏如何打乱牌面java_家长专栏提高儿童记忆力的游戏训练

记忆是人脑对过去经验的保持和再现。记忆过程包括三个基本环节&#xff0c;即识记、保持、再认或回忆。识记是识别和记住事物。保持是将已获得的知识或经验巩固与保留在大脑中。再认是指过去经历过的事物再度出现时&#xff0c;能将它指认出来。回忆是指过去经历过的事物不在面…

keras中的mini-batch gradient descent (转)

深度学习的优化算法&#xff0c;说白了就是梯度下降。每次的参数更新有两种方式。 一、 第一种&#xff0c;遍历全部数据集算一次损失函数&#xff0c;然后算函数对各个参数的梯度&#xff0c;更新梯度。这种方法每更新一次参数都要把数据集里的所有样本都看一遍&#xff0c;计…

Leetcode 206. Reverse Linked List

Similar Questions Reverse Linked List II Binary Tree Upside Down Palindrome Linked List思路&#xff1a;链表反转。 解法一&#xff1a;迭代。 添加头节点&#xff08;推荐&#xff09;&#xff1a;不断将当前元素start插入dummy和dummy.next之间&#xff0c;实现反转。…

java中输出系统时间

老用老忘&#xff0c;乐此不疲 自己给自己写个模板&#xff0c;忘了随时copy也很香&#xff0c;不是吗&#xff1f; 不说废话了&#xff0c;上代码: package java操作的复习;import java.text.SimpleDateFormat; import java.util.Date;public class SystemTime {public sta…

centos redis make 报错_Redis入门安装,你只需要看我写的这篇就行了

今天来写点基础的东西&#xff0c;可能很多初学者不太会装Redis&#xff0c;这篇文章主要是分享一下如何在Linux中安装redis服务。1. Redis的介绍Redis是一种非关系型数据库(NoSQL)&#xff0c;NoSQL是以key-value的形式存储&#xff0c;和传统的关系型数据库不一样&#xff0c…

论算法的实际应用——泡妞论

http://blog.csdn.net/sm9sun/article/details/53519226 我们都知道&#xff0c;算法即解决问题的方法&#xff0c;我们衡量一个算法的优劣&#xff0c;可以用空间复杂度与时间复杂度来衡量。 换做我们实际生活中&#xff0c;就是物质成本开销与时间成本开销。 不同算法进行泡妞…

四舍六入五凑偶原则

写物理实验报告遇到的&#xff0c;给自己的记忆存个档&#xff0c;下次遇到不迷路 1 2

axios某一接口失败后不调用_axios 源码系列之如何取消请求

我们在前后端交互的过程中&#xff0c;通常是通过请求接口来实现的&#xff0c;而一个页面中的交互又非常复杂&#xff0c;例如需要多次频繁请求同一个接口&#xff0c;或者在接口还没返回时就要切换路由等。这些都需要对接口请求的时机或者请求接口之后进行处理&#xff0c;避…

office之excel设置文本格式

来到大学&#xff0c;好多时候填写一些班级或者身份证的表格时都要求设置文本格式&#xff0c;具体该怎么做呢&#xff0c;music走起嘿嘿。 Excel实现设置文本格式随手录了一个小视频&#xff0c;希望对你有所帮助&#xff0c;有帮到你的话可以点个赞&#xff0c;鼓励一下创作哈…

函数调用关系图如何画_程序是如何在 CPU 中运行的(二)

笔者能力有限,如果文中出现错误的地方,还请各位朋友能够给我指出来,我将不胜感激,谢谢~ 前言 在上一篇文章中《程序是如何在 CPU 中运行的(一)》笔者讲述了程序中一条一条指令以及一条一条数据是如何在 CPU 中运行的,在本文笔者将以 ARM Cortex M3 的内核为背景分析指令是…

yii2中的rules 自定义验证规则详解

yii2的一个强大之处之一就是他的Form组件&#xff0c;既方便又安全。有些小伙伴感觉用yii一段时间了&#xff0c;好嘛&#xff0c;除了比tp"难懂"好像啥都没有。 领导安排搞一个注册的功能&#xff0c;这家伙刷刷刷的又是百度啥啥啥好的表单样式&#xff0c;又是百度…

电脑功耗监测_应急监测便携式VOC检测仪色谱分析仪原理解析

对目前越来越多的应急测试要求&#xff0c;应急监测便携式VOC检测仪色谱分析仪的发展日趋迅猛和成熟。而仪器的体积和重量一直制约着应急监测便携式VOC检测仪色谱分析仪的发展&#xff0c;Model 3200打破了传统色谱仪的桎梏&#xff0c;将便携式标气、便携式电脑工作站、在线VO…

L1-058 6翻了 (15 分)

题目复制不太好看&#xff0c;我直接给截图了&#xff0c;如上: 究其本源&#xff0c;pta L1的题目主要侧重于对字符串处理的考察&#xff0c;可以说拿下字符串&#xff0c;pta L1的题目百分之八十五的部分基本上都不会难倒你了&#xff0c;所以要在做题的时候注意积累。这里是…

N皇后问题12 · N-Queens

&#xff3b;抄题&#xff3d;&#xff1a; n皇后问题是将n个皇后放置在n*n的棋盘上&#xff0c;皇后彼此之间不能相互攻击。 给定一个整数n&#xff0c;返回所有不同的n皇后问题的解决方案。 每个解决方案包含一个明确的n皇后放置布局&#xff0c;其中“Q”和“.”分别表示一个…

python md5解密_python写一个md5解密器示例

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里技术人对外发布原创技术内容的最大平台&…

L1-059 敲笨钟 (20 分)

题目截图如下,也可以跳转下方这个链接去pta平台自己测试一下: L1-059 敲笨钟 (20 分) 代码如下&#xff0c;部分关键注释已经在代码中标明: #include<bits/stdc.h> using namespace std; int main() {int n;string s;cin>>n;getchar(); //也可以使用cin.ignore()…

退出vim

退出vim命令 简单说明 :w保存编辑后的文件内容&#xff0c;但不退出vim编辑器。这个命令的作用是把内存缓冲区中的数据写到启动vim时指定的文件中。 :w! 强制写文件&#xff0c;即强制覆盖原有文件。如果原有文件的访问权限不允许写入文件&#xff0c;例如&#xff0c;原有的文…