topshelf是乙個開源的跨平台的宿主服務框架,支援windows和mono,只需要幾行**就可以構建乙個很方便使用的服務宿主。
官網:
github:
下面就開始來學習。
1.新建乙個控制台程式
2.新增引用
我們直接搜尋 topshelf log4net
或者nuget控制台:install-package topshelf.log4net
正常情況下 直接安裝topshelf 乙個就可以了。log4net只是為了更好的方便記錄日誌。
3.建立服務
先建立乙個類,繼承 servicecontrol 然後實現。
publiclogwriter 需要using topshelf.logging;class
sampleservice : servicecontrol
;_timer.elapsed += (sender, eventargs) =>_log.info(datetime.now);
}public
bool
start(hostcontrol hostcontrol)
public
bool
stop(hostcontrol hostcontrol)
}
4.呼叫
然後再main中呼叫
static這樣乙個簡單的服務就完成了。void main(string
args));}
log4net.config 如下:
xml version="1.0" encoding="utf-8"服務編寫好以後,我們可以直接安裝,安裝的命令也很簡單,直接 topshelfsample.exe install?>
<
log4net
>
<
name
="rollingfile"
type
>
<
file
value
="service.log"
/>
<
value
="true"
/>
<
lockingmodel
type
/>
<
layout
type
="log4net.layout.patternlayout"
>
<
conversionpattern
value
="%-5p %d %message%newline"
/>
layout
>
>
<
name
type
>
<
>
<
level
value
="error"
/>
<
forecolor
value
="red, highintensity"
/>
>
<
>
<
level
value
="info"
/>
<
forecolor
value
="white"
/>
>
<
>
<
level
value
="debug"
/>
<
forecolor
value
="cyan"
/>
>
<
layout
type
="log4net.layout.patternlayout"
>
<
conversionpattern
value
="%message%newline"
/>
layout
>
>
<
root
>
<
level
value
="debug"
/>
<
ref="rollingfile"
/>
<
ref/>
root
>
log4net
>
已經成功安裝。
啟動:topshelfsample.exe start
停止:topshelfsample.exe stop
解除安裝:topshelfsample.exe uninstall
更多命令可以topshelfsample.exe help
topshelf是乙個開源的跨平台的宿主服務框架,不過本身只支援mono 命令列執行,不能使用topshelf的命令列start,stop控**務。
log4net.config
xml version="1.0" encoding="utf-8"下面我們就來看看一下執行在linux下。?>
<
log4net
>
<
name
="rollingfile"
type
>
<
file
value
="service.log"
/>
<
value
="true"
/>
<
lockingmodel
type
/>
<
layout
type
="log4net.layout.patternlayout"
>
<
conversionpattern
value
="%-5p %d %message%newline"
/>
layout
>
>
<
root
>
<
level
value
="debug"
/>
<
ref="rollingfile"
/>
root
>
log4net
>
首先大家要安裝好 mono
可以參考:
測試系統版本:centos 6.4 mono 3.10.0
將程式上傳到linux 系統執行。
檢視日誌,成功執行
跨平台開發學習筆記
以前我的開發僅僅是侷限在msvc中,當時就隱約有一種想法,想跳出這個框框,因為我感覺msvc把我限制的太死,以至於我沒了msvc,就不會怎麼程式設計了。由於在公司做平台開發專案以及自己對這種突破的渴望,在這跨平台開發方面的知識補充了不少,也認識了不少。知道msvc只是乙個整合開發環境,它用的編譯器是...
跨平台相關
二者區別 strdup是posix,strdup是windows特定。在unix上,使用的strdup。在不同作業系統的lib庫名字不同的,為了讓程式可以多平台,需要在巨集定義中判斷當前執行作業系統和編譯器的型別,動態調整。windows win32 win32 linux linux linux ...
跨平台工具
作圖 做好圖 inkspace 向量圖 inpaint 提供類似 photoshop 的基礎功能,簡單易用 imagemagick pdf 處理 1.small pdf 2.i love pdf 編輯器1.sublime text 2.typora markdown 3.texmaker latex...