mirror of
https://github.com/TeaOSLab/EdgeNode.git
synced 2025-11-03 23:20:25 +08:00
46 lines
1.0 KiB
Go
46 lines
1.0 KiB
Go
// Copyright 2021 Liuxiangchao iwind.liu@gmail.com. All rights reserved.
|
|
//go:build !arm64
|
|
// +build !arm64
|
|
|
|
package nodes
|
|
|
|
import (
|
|
"bytes"
|
|
"github.com/TeaOSLab/EdgeNode/internal/remotelogs"
|
|
"github.com/iwind/TeaGo/Tea"
|
|
"github.com/iwind/TeaGo/logs"
|
|
"os"
|
|
"syscall"
|
|
)
|
|
|
|
// 处理异常
|
|
func (this *Node) handlePanic() {
|
|
// 如果是在前台运行就直接返回
|
|
backgroundEnv, _ := os.LookupEnv("EdgeBackground")
|
|
if backgroundEnv != "on" {
|
|
return
|
|
}
|
|
|
|
var panicFile = Tea.Root + "/logs/panic.log"
|
|
|
|
// 分析panic
|
|
data, err := os.ReadFile(panicFile)
|
|
if err == nil {
|
|
var index = bytes.Index(data, []byte("panic:"))
|
|
if index >= 0 {
|
|
remotelogs.Error("NODE", "系统错误,请上报给开发者: "+string(data[index:]))
|
|
}
|
|
}
|
|
|
|
fp, err := os.OpenFile(panicFile, os.O_CREATE|os.O_TRUNC|os.O_WRONLY|os.O_APPEND, 0777)
|
|
if err != nil {
|
|
logs.Println("NODE", "open 'panic.log' failed: "+err.Error())
|
|
return
|
|
}
|
|
err = syscall.Dup2(int(fp.Fd()), int(os.Stderr.Fd()))
|
|
if err != nil {
|
|
logs.Println("NODE", "write to 'panic.log' failed: "+err.Error())
|
|
}
|
|
}
|
|
|