亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

golang windows服務失敗,沒有任何錯誤

golang windows服務失敗,沒有任何錯誤

Go
慕雪6442864 2022-06-27 15:48:02
我使用 golang 編寫了一個簡單的 Windows 服務。package mainimport "golang.org/x/sys/windows/svc"import "io/ioutil"import "log"import "encoding/json"import "time"import "strconv"import "os"import "./cmd"import "golang.org/x/sys/windows/svc/eventlog"import "fmt"type myservice struct{}func (m *myservice) Execute(args []string, r <-chan svc.ChangeRequest, changes chan<- svc.Status) (ssec bool, errno uint32) {    log.Println("Starting service")    const cmdsAccepted = svc.AcceptStop | svc.AcceptShutdown | svc.AcceptPauseAndContinue    changes <- svc.Status{State: svc.StartPending}    changes <- svc.Status{State: svc.Running, Accepts: cmdsAccepted}    StartService(r, changes)    return}//RunService Runs the current application as a service.It will send the necessary flags to windows.func RunService(maintServiceName string) {    //var elog eventlog    elog, evtErr := eventlog.Open(maintServiceName)    if evtErr != nil {        return    }    defer elog.Close()    log.Println("Running service")    elog.Info(1, fmt.Sprintf("starting %s service", maintServiceName))    run := svc.Run    sererr := run(maintServiceName, &myservice{})    if sererr != nil {        elog.Error(1, fmt.Sprintf("%s service failed: %v", maintServiceName, sererr))    }}//StartService Starts the Servicefunc StartService(r <-chan svc.ChangeRequest, changes chan<- svc.Status) {    const cmdsAccepted = svc.AcceptStop | svc.AcceptShutdown | svc.AcceptPauseAndContinue    jsonFile, err := os.Open("config.json")    if err != nil {        log.Fatalln("No configuration found")    }該應用程序大部分時間運行一兩天都沒有問題,但之后停止而沒有任何錯誤。發生這種情況時,日志中的 sleep line 后沒有日志。我可以添加任何內容以獲取有關服務失敗的更多信息。這里可能是什么問題?
查看完整描述

1 回答

?
郎朗坤

TA貢獻1921條經驗 獲得超9個贊

select我將首先在in周圍添加一個循環StartService(請參閱此示例)。從您提供的代碼看來,您的服務將在收到任何可能是問題的信號(包括暫停/詢問)后退出。添加一些進一步的登錄StartService也可能是有益的(任何提供有關正在發生的事情的更多信息的東西都有幫助?。?/p>

如果這不能解決問題,那么值得在 go 例程中添加延遲/恢復StartService并檢查是否是恐慌導致了問題(只需向日志寫入一些內容可能就足夠了)。


查看完整回答
反對 回復 2022-06-27
  • 1 回答
  • 0 關注
  • 319 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號