mirror of
https://github.com/kaspanet/kaspad.git
synced 2025-05-29 18:26:41 +00:00

* [NOD-256] Add error log * [NOD-256] Add error log * [NOD-256] Fix typo and comment * [NOD-256] Remove btclog dir * [NOD-256] Format project * [NOD-256] Add error log files * [NOD-256] Add an option to add a log file to write into to an existing backend logger * [NOD-256] Get rid of redundant logs initialization * [NOD-256] rename initLogRotators to initLog * [NOD-256] Get rid ExampleSignTxOutput and convert ExampleBlockDAG_ProcessBlock to a regular test * [NOD-256] Show error message if os.Exiting from initLog
30 lines
697 B
Go
30 lines
697 B
Go
package panics
|
|
|
|
import (
|
|
"github.com/daglabs/btcd/logs"
|
|
"os"
|
|
"runtime/debug"
|
|
)
|
|
|
|
// HandlePanic recovers panics, log them, and then exits the process.
|
|
func HandlePanic(log logs.Logger, backendLog *logs.Backend) {
|
|
if err := recover(); err != nil {
|
|
log.Criticalf("Fatal error: %s", err)
|
|
log.Criticalf("Stack trace: %s", debug.Stack())
|
|
if backendLog != nil {
|
|
backendLog.Close()
|
|
}
|
|
os.Exit(1)
|
|
}
|
|
}
|
|
|
|
// GoroutineWrapperFunc returns a goroutine wrapper function that handles panics and write them to the log.
|
|
func GoroutineWrapperFunc(log logs.Logger, backendLog *logs.Backend) func(func()) {
|
|
return func(f func()) {
|
|
go func() {
|
|
defer HandlePanic(log, backendLog)
|
|
f()
|
|
}()
|
|
}
|
|
}
|