Платформа ЦРНП "Мирокод" для разработки проектов
https://git.mirocod.ru
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
37 lines
731 B
37 lines
731 B
// +build windows |
|
|
|
package log |
|
|
|
import ( |
|
"log" |
|
"os" |
|
"syscall" |
|
) |
|
|
|
var ( |
|
kernel32 = syscall.MustLoadDLL("kernel32.dll") |
|
procSetStdHandle = kernel32.MustFindProc("SetStdHandle") |
|
) |
|
|
|
func setStdHandle(stdhandle int32, handle syscall.Handle) error { |
|
r0, _, e1 := syscall.Syscall(procSetStdHandle.Addr(), 2, uintptr(stdhandle), uintptr(handle), 0) |
|
if r0 == 0 { |
|
if e1 != 0 { |
|
return error(e1) |
|
} |
|
return syscall.EINVAL |
|
} |
|
return nil |
|
} |
|
|
|
func CrashLog(file string) { |
|
f, err := os.OpenFile(file, os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0666) |
|
if err != nil { |
|
log.Println(err.Error()) |
|
} else { |
|
err = setStdHandle(syscall.STD_ERROR_HANDLE, syscall.Handle(f.Fd())) |
|
if err != nil { |
|
log.Println(err.Error()) |
|
} |
|
} |
|
}
|
|
|