mirror of
https://github.com/AdguardTeam/AdGuardHome.git
synced 2024-11-23 21:45:46 +03:00
40 lines
976 B
Go
40 lines
976 B
Go
|
package main
|
||
|
|
||
|
import (
|
||
|
"log"
|
||
|
"strings"
|
||
|
|
||
|
"golang.org/x/sys/windows"
|
||
|
"golang.org/x/sys/windows/svc/eventlog"
|
||
|
)
|
||
|
|
||
|
// should be the same as the service name!
|
||
|
const eventLogSrc = "AdGuardHome"
|
||
|
|
||
|
type eventLogWriter struct {
|
||
|
el *eventlog.Log
|
||
|
}
|
||
|
|
||
|
// Write sends a log message to the Event Log.
|
||
|
func (w *eventLogWriter) Write(b []byte) (int, error) {
|
||
|
return len(b), w.el.Info(1, string(b))
|
||
|
}
|
||
|
|
||
|
func configureSyslog() error {
|
||
|
// Continue if we receive "registry key already exists" or if we get
|
||
|
// ERROR_ACCESS_DENIED so that we can log without administrative permissions
|
||
|
// for pre-existing eventlog sources.
|
||
|
if err := eventlog.InstallAsEventCreate(eventLogSrc, eventlog.Info|eventlog.Warning|eventlog.Error); err != nil {
|
||
|
if !strings.Contains(err.Error(), "registry key already exists") && err != windows.ERROR_ACCESS_DENIED {
|
||
|
return err
|
||
|
}
|
||
|
}
|
||
|
el, err := eventlog.Open(eventLogSrc)
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
|
||
|
log.SetOutput(&eventLogWriter{el: el})
|
||
|
return nil
|
||
|
}
|