Topshelf 学习 跨平台
Topshelf是一个开源的跨平台的宿主服务框架,支持Windows和Mono,只需要几行代码就可以构建一个很方便使用的服务宿主。
官网:http://topshelf-project.com
GitHub:http://github.com/topshelf/Topshelf
下面就开始来学习。
创建项目
1.新建一个控制台程序
2.添加引用
我们直接搜索 Topshelf log4net
或者Nuget控制台:Install-Package Topshelf.Log4Net
正常情况下 直接安装Topshelf 一个就可以了。Log4Net只是为了更好的方便记录日志。
3.创建服务
先创建一个类,继承 ServiceControl 然后实现。
public class SampleService : ServiceControl { LogWriter _log; Timer _timer; public SampleService() { _log = HostLogger.Get<SampleService>(); _timer = new Timer(1000) { AutoReset = true }; _timer.Elapsed += (sender, eventArgs) => _log.Info(DateTime.Now); } public bool Start(HostControl hostControl) { _log.Info("服务启动"); _timer.Start(); return true; } public bool Stop(HostControl hostControl) { _log.Info("服务停止"); _timer.Stop(); return true; } }
LogWriter 需要using Topshelf.Logging;
4.调用
然后再Main中调用
static void Main(string[] args) { HostFactory.Run(x => { x.UseLog4Net("log4net.config"); x.Service<SampleService>(); x.SetDescription("TopshelfSample说明"); x.SetDisplayName("TopshelfSample显示名称"); x.SetServiceName("TopshelfSample服务名称"); }); }
这样一个简单的服务就完成了。
log4net.config 如下:
<?xml version="1.0" encoding="utf-8" ?> <log4net> <appender name="RollingFile" type="log4net.Appender.FileAppender"> <file value="service.log" /> <appendToFile value="true" /> <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%-5p %d{hh:mm:ss} %message%newline" /> </layout> </appender> <appender name="ColoredConsoleAppender" type="log4net.Appender.ColoredConsoleAppender"> <mapping> <level value="ERROR" /> <foreColor value="Red, HighIntensity" /> </mapping> <mapping> <level value="INFO" /> <foreColor value="White" /> </mapping> <mapping> <level value="DEBUG" /> <foreColor value="Cyan" /> </mapping> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%message%newline" /> </layout> </appender> <!-- Set root logger level to DEBUG and its only appender to Console --> <root> <level value="DEBUG" /> <appender-ref ref="RollingFile" /> <appender-ref ref="ColoredConsoleAppender" /> </root> </log4net>
安装服务
服务编写好以后,我们可以直接安装,安装的命令也很简单,直接 TopshelfSample.exe install
已经成功安装。
启动:TopshelfSample.exe start
停止:TopshelfSample.exe stop
卸载:TopshelfSample.exe uninstall
更多命令可以TopshelfSample.exe help
跨平台
Topshelf是一个开源的跨平台的宿主服务框架,不过本身只支持mono 命令行执行,不能使用Topshelf的命令行Start,Stop控制服务。
log4net ColoredConsoleAppender 不支持linux ,所以去掉ColoredConsoleAppender ,保留RollingFile。
log4net.config
<?xml version="1.0" encoding="utf-8" ?> <log4net> <appender name="RollingFile" type="log4net.Appender.FileAppender"> <file value="service.log" /> <appendToFile value="true" /> <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%-5p %d{hh:mm:ss} %message%newline" /> </layout> </appender> <!-- Set root logger level to DEBUG and its only appender to Console --> <root> <level value="DEBUG" /> <appender-ref ref="RollingFile" /> </root> </log4net>
下面我们就来看看一下运行在linux下。
首先大家要安装好 mono
可以参考:
测试系统版本:centos 6.4 mono 3.10.0
将程序上传到linux 系统执行。
mono TopshelfSample.exe
查看日志,成功执行
参考文档:
https://topshelf.readthedocs.org/en/latest/configuration/quickstart.html
下一篇: 女性乳房瘙痒小心是大病征兆 一定要警惕
推荐阅读
-
JEECG 3.7跨时代重构精华版发布,企业级JAVA快速开发平台 快速开发平台
-
【版本发布】JEECG 3.7跨时代重构精华版发布,企业级JAVA快速开发平台
-
跨平台日志清理工具 Log-Cutter v1.0.3 正式发布
-
跨平台日志清理工具 Log-Cutter v1.0.3 正式发布
-
PHP跨平台获取服务器IP地址自定义函数分享
-
用JavaScript访问SAP云平台上的服务遇到跨域问题该怎么办 SAPSAP云平台跨域WebCORS
-
SAP Leonardo图片处理相关的机器学习服务在SAP智能服务场景中的应用 人工智能机器学习SAP Cloud PlatformSAP成都研究院SAP云平台
-
php基于curl扩展制作跨平台的restfule 接口_PHP教程
-
从MySQL导出XLS数据库工具(跨平台)_MySQL
-
跨 OS 平台迁移 Oracle 数据库