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())
 | |
| 		}
 | |
| 	}
 | |
| }
 | |
| 
 |