Files
go-winio/pkg/etw/sample/sample.go
T
2018-12-13 14:26:45 -08:00

54 lines
1.3 KiB
Go

// Shows a sample usage of the ETW logging package.
package main
import (
"bufio"
"fmt"
"os"
"github.com/Microsoft/go-winio/pkg/etw"
"github.com/sirupsen/logrus"
"golang.org/x/sys/windows"
)
func callback(sourceID *windows.GUID, state etw.ProviderState, level etw.Level, matchAnyKeyword uint64, matchAllKeyword uint64, filterData uintptr) {
fmt.Printf("Callback: isEnabled=%d, level=%d, matchAnyKeyword=%d\n", state, level, matchAnyKeyword)
}
func main() {
providerID := windows.GUID{0xdd2062c6, 0x5d1b, 0x4a0f, [8]uint8{0xbd, 0xb9, 0x22, 0x28, 0xbc, 0xb1, 0x07, 0x7c}}
provider, err := etw.NewProvider("TestProvider", &providerID, callback)
if err != nil {
logrus.Error(err)
return
}
defer func() {
if err := provider.Close(); err != nil {
logrus.Error(err)
}
}()
reader := bufio.NewReader(os.Stdin)
fmt.Println("Press enter to log an event")
reader.ReadString('\n')
event := etw.NewEvent("TestEvent", etw.NewEventDescriptor())
event.Metadata.AddField("TestField", etw.InTypeAnsiString)
event.Data.AddString("Foo")
event.Metadata.AddField("TestField2", etw.InTypeAnsiString)
event.Data.AddString("Bar")
if err := provider.WriteEvent(event); err != nil {
fmt.Println(err)
return
}
fmt.Println("Event written")
fmt.Println("Press enter to exit")
reader.ReadString('\n')
}