Merge pull request #3831 from Random-Liu/add-windows-log-file
Add `--log-file` flag for windows service.
This commit is contained in:
commit
31ea7b4ede
@ -42,6 +42,7 @@ var (
|
|||||||
registerServiceFlag bool
|
registerServiceFlag bool
|
||||||
unregisterServiceFlag bool
|
unregisterServiceFlag bool
|
||||||
runServiceFlag bool
|
runServiceFlag bool
|
||||||
|
logFileFlag string
|
||||||
|
|
||||||
kernel32 = windows.NewLazySystemDLL("kernel32.dll")
|
kernel32 = windows.NewLazySystemDLL("kernel32.dll")
|
||||||
setStdHandle = kernel32.NewProc("SetStdHandle")
|
setStdHandle = kernel32.NewProc("SetStdHandle")
|
||||||
@ -52,6 +53,8 @@ var (
|
|||||||
service *handler
|
service *handler
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const defaultServiceName = "containerd"
|
||||||
|
|
||||||
// serviceFlags returns an array of flags for configuring containerd to run
|
// serviceFlags returns an array of flags for configuring containerd to run
|
||||||
// as a Windows service under control of SCM.
|
// as a Windows service under control of SCM.
|
||||||
func serviceFlags() []cli.Flag {
|
func serviceFlags() []cli.Flag {
|
||||||
@ -59,7 +62,7 @@ func serviceFlags() []cli.Flag {
|
|||||||
cli.StringFlag{
|
cli.StringFlag{
|
||||||
Name: "service-name",
|
Name: "service-name",
|
||||||
Usage: "Set the Windows service name",
|
Usage: "Set the Windows service name",
|
||||||
Value: "containerd",
|
Value: defaultServiceName,
|
||||||
},
|
},
|
||||||
cli.BoolFlag{
|
cli.BoolFlag{
|
||||||
Name: "register-service",
|
Name: "register-service",
|
||||||
@ -74,14 +77,18 @@ func serviceFlags() []cli.Flag {
|
|||||||
Usage: "",
|
Usage: "",
|
||||||
Hidden: true,
|
Hidden: true,
|
||||||
},
|
},
|
||||||
|
cli.StringFlag{
|
||||||
|
Name: "log-file",
|
||||||
|
Usage: "Path to the containerd log file",
|
||||||
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// applyPlatformFlags applies platform-specific flags.
|
// applyPlatformFlags applies platform-specific flags.
|
||||||
func applyPlatformFlags(context *cli.Context) {
|
func applyPlatformFlags(context *cli.Context) {
|
||||||
|
serviceNameFlag = context.GlobalString("service-name")
|
||||||
if s := context.GlobalString("service-name"); s != "" {
|
if serviceNameFlag == "" {
|
||||||
serviceNameFlag = s
|
serviceNameFlag = defaultServiceName
|
||||||
}
|
}
|
||||||
for _, v := range []struct {
|
for _, v := range []struct {
|
||||||
name string
|
name string
|
||||||
@ -102,6 +109,7 @@ func applyPlatformFlags(context *cli.Context) {
|
|||||||
} {
|
} {
|
||||||
*v.d = context.GlobalBool(v.name)
|
*v.d = context.GlobalBool(v.name)
|
||||||
}
|
}
|
||||||
|
logFileFlag = context.GlobalString("log-file")
|
||||||
}
|
}
|
||||||
|
|
||||||
type handler struct {
|
type handler struct {
|
||||||
@ -243,7 +251,15 @@ func registerUnregisterService(root string) (bool, error) {
|
|||||||
return true, err
|
return true, err
|
||||||
}
|
}
|
||||||
|
|
||||||
logrus.SetOutput(ioutil.Discard)
|
logOutput := ioutil.Discard
|
||||||
|
if logFileFlag != "" {
|
||||||
|
f, err := os.OpenFile(logFileFlag, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
|
||||||
|
if err != nil {
|
||||||
|
return true, errors.Wrapf(err, "open log file %q", logFileFlag)
|
||||||
|
}
|
||||||
|
logOutput = f
|
||||||
|
}
|
||||||
|
logrus.SetOutput(logOutput)
|
||||||
}
|
}
|
||||||
return false, nil
|
return false, nil
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user