mirror of
https://git.sr.ht/~eliasnaur/gio
synced 2026-07-01 07:35:40 +00:00
app/internal/log: add logger for Windows DebugView
Signed-off-by: mural <mural@ctli.io>
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
// SPDX-License-Identifier: Unlicense OR MIT
|
||||
|
||||
package log
|
||||
|
||||
import (
|
||||
"log"
|
||||
"syscall"
|
||||
"unsafe"
|
||||
)
|
||||
|
||||
type logger struct{}
|
||||
|
||||
var (
|
||||
kernel32 = syscall.NewLazyDLL("kernel32")
|
||||
outputDebugStringW = kernel32.NewProc("OutputDebugStringW")
|
||||
debugView *logger
|
||||
)
|
||||
|
||||
func init() {
|
||||
// Windows DebugView already includes timestamps.
|
||||
if syscall.Stderr == 0 {
|
||||
log.SetFlags(log.Flags() &^ log.LstdFlags)
|
||||
log.SetOutput(debugView)
|
||||
}
|
||||
}
|
||||
|
||||
func (l *logger) Write(buf []byte) (int, error) {
|
||||
p, err := syscall.UTF16PtrFromString(string(buf))
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
outputDebugStringW.Call(uintptr(unsafe.Pointer(p)))
|
||||
return len(buf), nil
|
||||
}
|
||||
Reference in New Issue
Block a user