Help us shape the future of Go! Take the 2026 Go Developer Survey

eventloghook

package module
v0.0.0-...-a195f28 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 4, 2025 License: MIT Imports: 3 Imported by: 1

README

Windows EventLog hooks for Logrus

Usage

import (
  "log/syslog"
  "github.com/sirupsen/logrus"
  "github.com/freman/eventloghook"
  "golang.org/x/sys/windows/svc/eventlog"
)

func main() {
  log       := logrus.New()
  elog, err = eventlog.Open("Service Name")
  if err != nil {
    panic(err)
  }
  defer elog.Close()
  log.Hooks.Add(eventloghook.NewHook(elog))
}

If you want to output to the windows console/terminal - tho why you'd want to do that vs use logrus built in method I have no idea :D

import (
  "log/syslog"
  "github.com/sirupsen/logrus"
  "github.com/freman/eventloghook"
  "golang.org/x/sys/windows/svc/debug"
)

func main() {
  log       := logrus.New()
  elog = debug.New("Service Name")
  defer elog.Close()
  log.Hooks.Add(eventloghook.NewHook(elog))
}

Breaking Changes

  • 2025-06-04 - Added support for Trace log level, better late than never. Only a concern if you're relying on the event ID for filtering or reporting. Changes:
    • logrus.InfoLevel used to be EID 2 is now EID 3
    • logrus.DebugLevel used to be EID 1 is now EID 2
    • logrus.TraceLevel never existed but is now EID 1

Documentation

Rendered for windows/amd64

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type EventLogHook

type EventLogHook struct {
	// contains filtered or unexported fields
}

EventLogHook to send logs via windows log.

func NewHook

func NewHook(Logger Logger) *EventLogHook

NewHook creates and returns a new EventLogHook wrapped around anything that implements the Logger interface for example: * golang.org/x/sys/windows/svc/eventlog.Log * golang.org/x/sys/windows/svc/debug.Log

func (*EventLogHook) Fire

func (hook *EventLogHook) Fire(entry *logrus.Entry) error

func (*EventLogHook) Levels

func (hook *EventLogHook) Levels() []logrus.Level

type Logger

type Logger interface {
	Error(eid uint32, msg string) error
	Info(eid uint32, msg string) error
	Warning(eid uint32, msg string) error
}

Logger interface to cover the two common windows loggers IE: * golang.org/x/sys/windows/svc/eventlog.Log * golang.org/x/sys/windows/svc/debug.Log

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL