내가 지금이 내 로그 파일에 panic()
에서 예를 들어 발생하는 경우 스택 트레이스의 모든 정보를 기록하고 싶은쓰기 결과 스택 추적 기본값은
var (
logFile *os.File
Info *log.Logger
)
func init() {
var err error
logFile, err = os.OpenFile("/my/file/with.log", os.O_CREATE|os.O_APPEND|os.O_WRONLY, 0666)
if err != nil {
fmt.Printf("Cannot open log file error:%s. Program was terminated.", err)
os.Exit(1)
}
Info = log.New(logFile,
"INFO: ", log.Ldate|log.Ltime|log.Lshortfile)
}
다음과 같이 패턴에서 정의 내 프로그램에서 로거를 사용하는 파일입니다. 이제 일부가 잘못 되었다면이 모든 정보가 IDE에 콘솔로 출력되지만, porgram이 서버에서 작동하면 null 포인터, 함수 전달 인수가 잘못되었을 때 정보가 손실되므로이 정보를 로그 파일에 기록해야합니다. 가능합니까?
(또는로 일부 다른 로깅 메커니즘). 'os.Stderr'를 앱의 다른 파일로 설정했지만 외부에서 관리하는 것이 더 신뢰할 수 있습니다. – JimB
이것은 열쇠입니다. A는 golang doc에서이 기능을 찾아 보았습니다 만, 지금은 아무 것도 없습니다. A는 예를 들어'os.Stderr = os.NewFile (uintptr (syscall.Stderr), "/my/log/file.log")'를 시도했지만 작동하지 않습니다. 나는 여전히 다른 어떤 것을 시도 할 것입니다 ... 누군가가 더 빨라지고 저에게 해결책을 찾아야합니다. – Mbded
'os.NewFile'은 그 파일 기술자를 가진 새로운'* os.File'을 반환하기 때문에, 반환 된 문자열 변경을 제외하고 아무것도하지 않았습니다 by os.Stderr.Name()' – JimB