github.com/microsoft/moc@v0.17.1/pkg/logging/redirectstderr_windows.go (about) 1 // Copyright (c) Microsoft Corporation. 2 // Licensed under the Apache v2.0 license. 3 4 package logging 5 6 import ( 7 "os" 8 "syscall" 9 ) 10 11 var ( 12 kernel32 = syscall.MustLoadDLL("kernel32.dll") 13 procSetStdHandle = kernel32.MustFindProc("SetStdHandle") 14 ) 15 16 func setStdHandle(stdhandle int32, handle syscall.Handle) error { 17 r0, _, e1 := syscall.Syscall(procSetStdHandle.Addr(), 2, uintptr(stdhandle), uintptr(handle), 0) 18 if r0 == 0 { 19 if e1 != 0 { 20 return error(e1) 21 } 22 return syscall.EINVAL 23 } 24 return nil 25 } 26 27 func RedirectStdErr(file *os.File) { 28 err := setStdHandle(syscall.STD_ERROR_HANDLE, syscall.Handle(file.Fd())) 29 if err != nil { 30 } 31 os.Stderr = file 32 return 33 }