mirror of
https://github.com/zhaojh329/rttys.git
synced 2026-02-27 09:53:21 +08:00
add support log panic while running in daemon mode.
Signed-off-by: Jianhui Zhao <zhaojh329@gmail.com>
This commit is contained in:
@@ -122,6 +122,8 @@ func (br *broker) devRegister(dev *device) {
|
||||
}
|
||||
|
||||
func (br *broker) run() {
|
||||
defer logPanic()
|
||||
|
||||
for {
|
||||
select {
|
||||
case c := <-br.register:
|
||||
|
||||
@@ -276,6 +276,8 @@ func msgTypeName(typ byte) string {
|
||||
}
|
||||
|
||||
func (dev *device) readLoop() {
|
||||
defer logPanic()
|
||||
|
||||
logPrefix := dev.conn.RemoteAddr().String()
|
||||
|
||||
tmr := time.AfterFunc(time.Second*5, func() {
|
||||
@@ -410,6 +412,8 @@ func (dev *device) readLoop() {
|
||||
}
|
||||
|
||||
func (dev *device) writeLoop() {
|
||||
defer logPanic()
|
||||
|
||||
defer func() {
|
||||
dev.br.unregister <- dev
|
||||
}()
|
||||
|
||||
@@ -112,6 +112,7 @@ func (rw *HttpProxyWriter) WriteRequest(req *http.Request) {
|
||||
}
|
||||
|
||||
func doHttpProxy(brk *broker, c net.Conn) {
|
||||
defer logPanic()
|
||||
defer c.Close()
|
||||
|
||||
br := bufio.NewReader(c)
|
||||
|
||||
@@ -4,6 +4,7 @@ import (
|
||||
"context"
|
||||
"os"
|
||||
"runtime"
|
||||
"runtime/debug"
|
||||
|
||||
"rttys/config"
|
||||
"rttys/version"
|
||||
@@ -141,6 +142,8 @@ func runRttys(c *cli.Command) error {
|
||||
log.Info().Msg("Build Time: " + version.BuildTime())
|
||||
}
|
||||
|
||||
defer logPanic()
|
||||
|
||||
br := newBroker(cfg)
|
||||
go br.run()
|
||||
|
||||
@@ -150,3 +153,15 @@ func runRttys(c *cli.Command) error {
|
||||
|
||||
select {}
|
||||
}
|
||||
|
||||
func logPanic() {
|
||||
if r := recover(); r != nil {
|
||||
saveCrashLog(r, debug.Stack())
|
||||
os.Exit(2)
|
||||
}
|
||||
}
|
||||
|
||||
func saveCrashLog(p any, stack []byte) {
|
||||
log.Error().Msgf("%v", p)
|
||||
log.Error().Msg(string(stack))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user