Skip to content

Commit 0bb48ae

Browse files
committed
Add --log-file flag for windows service.
Signed-off-by: Lantao Liu <[email protected]>
1 parent ec661e8 commit 0bb48ae

1 file changed

Lines changed: 21 additions & 5 deletions

File tree

cmd/containerd/command/service_windows.go

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ var (
4242
registerServiceFlag bool
4343
unregisterServiceFlag bool
4444
runServiceFlag bool
45+
logFileFlag string
4546

4647
kernel32 = windows.NewLazySystemDLL("kernel32.dll")
4748
setStdHandle = kernel32.NewProc("SetStdHandle")
@@ -52,14 +53,16 @@ var (
5253
service *handler
5354
)
5455

56+
const defaultServiceName = "containerd"
57+
5558
// serviceFlags returns an array of flags for configuring containerd to run
5659
// as a Windows service under control of SCM.
5760
func serviceFlags() []cli.Flag {
5861
return []cli.Flag{
5962
cli.StringFlag{
6063
Name: "service-name",
6164
Usage: "Set the Windows service name",
62-
Value: "containerd",
65+
Value: defaultServiceName,
6366
},
6467
cli.BoolFlag{
6568
Name: "register-service",
@@ -74,14 +77,18 @@ func serviceFlags() []cli.Flag {
7477
Usage: "",
7578
Hidden: true,
7679
},
80+
cli.StringFlag{
81+
Name: "log-file",
82+
Usage: "Path to the containerd log file",
83+
},
7784
}
7885
}
7986

8087
// applyPlatformFlags applies platform-specific flags.
8188
func applyPlatformFlags(context *cli.Context) {
82-
83-
if s := context.GlobalString("service-name"); s != "" {
84-
serviceNameFlag = s
89+
serviceNameFlag = context.GlobalString("service-name")
90+
if serviceNameFlag == "" {
91+
serviceNameFlag = defaultServiceName
8592
}
8693
for _, v := range []struct {
8794
name string
@@ -102,6 +109,7 @@ func applyPlatformFlags(context *cli.Context) {
102109
} {
103110
*v.d = context.GlobalBool(v.name)
104111
}
112+
logFileFlag = context.GlobalString("log-file")
105113
}
106114

107115
type handler struct {
@@ -243,7 +251,15 @@ func registerUnregisterService(root string) (bool, error) {
243251
return true, err
244252
}
245253

246-
logrus.SetOutput(ioutil.Discard)
254+
logOutput := ioutil.Discard
255+
if logFileFlag != "" {
256+
f, err := os.OpenFile(logFileFlag, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
257+
if err != nil {
258+
return true, errors.Wrapf(err, "open log file %q", logFileFlag)
259+
}
260+
logOutput = f
261+
}
262+
logrus.SetOutput(logOutput)
247263
}
248264
return false, nil
249265
}

0 commit comments

Comments
 (0)