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  }