diff --git a/server/log.go b/server/log.go index 59d4bfc7af..16ea069839 100644 --- a/server/log.go +++ b/server/log.go @@ -37,11 +37,18 @@ func (s *Server) ConfigureLogger() { opts = s.getOpts() ) + syslog := opts.Syslog + if isWindowsService() && opts.LogFile == "" { + // Enable syslog if no log file is specified and we're running as a + // Windows service so that logs are written to the Windows event log. + syslog = true + } + if opts.LogFile != "" { log = logger.NewFileLogger(opts.LogFile, opts.Logtime, opts.Debug, opts.Trace, true) } else if opts.RemoteSyslog != "" { log = logger.NewRemoteSysLogger(opts.RemoteSyslog, opts.Debug, opts.Trace) - } else if opts.Syslog { + } else if syslog { log = logger.NewSysLogger(opts.Debug, opts.Trace) } else { colors := true diff --git a/server/service.go b/server/service.go index 1c93f5ef2e..fbede40ae6 100644 --- a/server/service.go +++ b/server/service.go @@ -9,3 +9,8 @@ func Run(server *Server) error { server.Start() return nil } + +// isWindowsService indicates if NATS is running as a Windows service. +func isWindowsService() bool { + return false +} diff --git a/server/service_windows.go b/server/service_windows.go index e13d96079d..aa840fe37a 100644 --- a/server/service_windows.go +++ b/server/service_windows.go @@ -86,3 +86,9 @@ func Run(server *Server) error { } return run(serviceName, &winServiceWrapper{server}) } + +// isWindowsService indicates if NATS is running as a Windows service. +func isWindowsService() bool { + isInteractive, _ := svc.IsAnInteractiveSession() + return !isInteractive +}