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
可以參考:http://www.cnblogs.com/linezero/p/4774850.html
測試系統版本:centos 6.4 ?mono 3.10.0
?
將程序上傳到linux 系統執行。?
mono TopshelfSample.exe
?查看日志,成功執行
參考文檔:
https://topshelf.readthedocs.org/en/latest/configuration/quickstart.html
?
如果你覺得本文對你有幫助,請點擊“推薦”,謝謝。
總結
以上是生活随笔為你收集整理的Topshelf 学习 跨平台的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: http接口测试工具——RESTClie
- 下一篇: 2亿QQ用户大调度背后的架构设计和高效运