为了账号安全,请及时绑定邮箱和手机立即绑定

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也可能是有益的(任何提供有关正在发生的事情的更多信息的东西都有帮助!)

如果这不能解决问题,那么值得在 go 例程中添加延迟/恢复StartService并检查是否是恐慌导致了问题(只需向日志写入一些内容可能就足够了)。


查看完整回答
反对 回复 2022-06-27
  • 1 回答
  • 0 关注
  • 252 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信