我在我的程序中使用logger,如下所示:
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)
}
现在我想从stackTrace中写入所有信息,如果这些信息发生在panic()
到我的日志文件中。现在,如果有些错误,所有这些信息都会在我的IDE中打印到控制台,但是如果porgram在服务器上工作,我会丢失信息,如果发生了一些空指针,错误的传递参数到函数,这就是为什么我想把这些信息写入日志文件。
有可能的 ?
答案 0 :(得分:0)
使用syscall.Dup2将打开的文件链接到标准流
func main() {
syscall.Dup2(int(logFile.Fd()), 2)
}
或创建恐慌处理程序
defer func() {
err := recover()
if err != nil {
//...
}
}()