1717package command
1818
1919import (
20- "bytes"
2120 "fmt"
2221 "io/ioutil"
2322 "log"
@@ -35,7 +34,6 @@ import (
3534 "golang.org/x/sys/windows"
3635 "golang.org/x/sys/windows/svc"
3736 "golang.org/x/sys/windows/svc/debug"
38- "golang.org/x/sys/windows/svc/eventlog"
3937 "golang.org/x/sys/windows/svc/mgr"
4038)
4139
5452 service * handler
5553)
5654
57- const (
58- // These should match the values in event_messages.mc.
59- eventInfo = 1
60- eventWarn = 1
61- eventError = 1
62- eventDebug = 2
63- eventPanic = 3
64- eventFatal = 4
65-
66- eventExtraOffset = 10 // Add this to any event to get a string that supports extended data
67- )
68-
6955// serviceFlags returns an array of flags for configuring containerd to run
7056// as a Windows service under control of SCM.
7157func serviceFlags () []cli.Flag {
@@ -124,93 +110,6 @@ type handler struct {
124110 done chan struct {} // Indicates back to app main to quit
125111}
126112
127- type etwHook struct {
128- log * eventlog.Log
129- }
130-
131- func (h * etwHook ) Levels () []logrus.Level {
132- return []logrus.Level {
133- logrus .PanicLevel ,
134- logrus .FatalLevel ,
135- logrus .ErrorLevel ,
136- logrus .WarnLevel ,
137- logrus .InfoLevel ,
138- logrus .DebugLevel ,
139- }
140- }
141-
142- func (h * etwHook ) Fire (e * logrus.Entry ) error {
143- var (
144- etype uint16
145- eid uint32
146- )
147-
148- switch e .Level {
149- case logrus .PanicLevel :
150- etype = windows .EVENTLOG_ERROR_TYPE
151- eid = eventPanic
152- case logrus .FatalLevel :
153- etype = windows .EVENTLOG_ERROR_TYPE
154- eid = eventFatal
155- case logrus .ErrorLevel :
156- etype = windows .EVENTLOG_ERROR_TYPE
157- eid = eventError
158- case logrus .WarnLevel :
159- etype = windows .EVENTLOG_WARNING_TYPE
160- eid = eventWarn
161- case logrus .InfoLevel :
162- etype = windows .EVENTLOG_INFORMATION_TYPE
163- eid = eventInfo
164- case logrus .DebugLevel :
165- etype = windows .EVENTLOG_INFORMATION_TYPE
166- eid = eventDebug
167- default :
168- return errors .Wrap (errdefs .ErrInvalidArgument , "unknown level" )
169- }
170-
171- // If there is additional data, include it as a second string.
172- exts := ""
173- if len (e .Data ) > 0 {
174- fs := bytes.Buffer {}
175- for k , v := range e .Data {
176- fs .WriteString (k )
177- fs .WriteByte ('=' )
178- fmt .Fprint (& fs , v )
179- fs .WriteByte (' ' )
180- }
181-
182- exts = fs .String ()[:fs .Len ()- 1 ]
183- eid += eventExtraOffset
184- }
185-
186- if h .log == nil {
187- fmt .Fprintf (os .Stderr , "%s [%s]\n " , e .Message , exts )
188- return nil
189- }
190-
191- var (
192- ss [2 ]* uint16
193- err error
194- )
195-
196- ss [0 ], err = windows .UTF16PtrFromString (e .Message )
197- if err != nil {
198- return err
199- }
200-
201- count := uint16 (1 )
202- if exts != "" {
203- ss [1 ], err = windows .UTF16PtrFromString (exts )
204- if err != nil {
205- return err
206- }
207-
208- count ++
209- }
210-
211- return windows .ReportEvent (h .log .Handle , etype , 0 , eid , 0 , count , 0 , & ss [0 ], nil )
212- }
213-
214113func getServicePath () (string , error ) {
215114 p , err := exec .LookPath (os .Args [0 ])
216115 if err != nil {
@@ -283,7 +182,7 @@ func registerService() error {
283182 return err
284183 }
285184
286- return eventlog . Install ( serviceNameFlag , p , false , eventlog . Info | eventlog . Warning | eventlog . Error )
185+ return nil
287186}
288187
289188func unregisterService () error {
@@ -299,7 +198,6 @@ func unregisterService() error {
299198 }
300199 defer s .Close ()
301200
302- eventlog .Remove (serviceNameFlag )
303201 err = s .Delete ()
304202 if err != nil {
305203 return err
@@ -345,20 +243,6 @@ func registerUnregisterService(root string) (bool, error) {
345243 return true , err
346244 }
347245
348- interactive , err := svc .IsAnInteractiveSession ()
349- if err != nil {
350- return true , err
351- }
352-
353- var log * eventlog.Log
354- if ! interactive {
355- log , err = eventlog .Open (serviceNameFlag )
356- if err != nil {
357- return true , err
358- }
359- }
360-
361- logrus .AddHook (& etwHook {log })
362246 logrus .SetOutput (ioutil .Discard )
363247 }
364248 return false , nil
0 commit comments