vspd: Move start/stop logging to main func.

This ensures that the startup/shutdown messages are always the
first/last thing to be logged.
This commit is contained in:
jholdstock 2023-09-13 09:07:30 +01:00 committed by Jamie Holdstock
parent e38032ba2f
commit 8038a0ea46
2 changed files with 23 additions and 21 deletions

View File

@ -7,6 +7,9 @@ package main
import ( import (
"fmt" "fmt"
"os" "os"
"runtime"
"github.com/decred/vspd/internal/version"
) )
func main() { func main() {
@ -23,7 +26,25 @@ func run() int {
return 1 return 1
} }
vspd, err := newVspd(cfg) log := cfg.logger("VSP")
defer log.Criticalf("Shutdown complete")
log.Criticalf("Version %s (Go version %s %s/%s)", version.String(),
runtime.Version(), runtime.GOOS, runtime.GOARCH)
if cfg.netParams == &mainNetParams && version.IsPreRelease() {
log.Warnf("")
log.Warnf("\tWARNING: This is a pre-release version of vspd which should not be used on mainnet.")
log.Warnf("")
}
if cfg.VspClosed {
log.Warnf("")
log.Warnf("\tWARNING: Config --vspclosed is set. This will prevent vspd from accepting new tickets.")
log.Warnf("")
}
vspd, err := newVspd(cfg, log)
if err != nil { if err != nil {
fmt.Fprintf(os.Stderr, "newVspd error: %v\n", err) fmt.Fprintf(os.Stderr, "newVspd error: %v\n", err)
return 1 return 1

View File

@ -8,7 +8,6 @@ import (
"context" "context"
"errors" "errors"
"fmt" "fmt"
"runtime"
"strings" "strings"
"sync" "sync"
"time" "time"
@ -56,14 +55,13 @@ type vspd struct {
// newVspd creates the essential resources required by vspd - a database, logger // newVspd creates the essential resources required by vspd - a database, logger
// and RPC clients - then returns an instance of vspd which is ready to be run. // and RPC clients - then returns an instance of vspd which is ready to be run.
func newVspd(cfg *config) (*vspd, error) { func newVspd(cfg *config, log slog.Logger) (*vspd, error) {
// Open database. // Open database.
db, err := database.Open(cfg.dbPath, cfg.logger(" DB"), maxVoteChangeRecords) db, err := database.Open(cfg.dbPath, cfg.logger(" DB"), maxVoteChangeRecords)
if err != nil { if err != nil {
return nil, fmt.Errorf("failed to open database: %w", err) return nil, fmt.Errorf("failed to open database: %w", err)
} }
log := cfg.logger("VSP")
rpcLog := cfg.logger("RPC") rpcLog := cfg.logger("RPC")
// Create a channel to receive blockConnected notifications from dcrd. // Create a channel to receive blockConnected notifications from dcrd.
@ -92,24 +90,7 @@ func newVspd(cfg *config) (*vspd, error) {
// run starts all of vspds background services including the web server, and // run starts all of vspds background services including the web server, and
// stops all started services when a shutdown is requested. // stops all started services when a shutdown is requested.
func (v *vspd) run() int { func (v *vspd) run() int {
v.log.Criticalf("Version %s (Go version %s %s/%s)", version.String(), runtime.Version(),
runtime.GOOS, runtime.GOARCH)
if v.cfg.netParams == &mainNetParams &&
version.IsPreRelease() {
v.log.Warnf("")
v.log.Warnf("\tWARNING: This is a pre-release version of vspd which should not be used on mainnet.")
v.log.Warnf("")
}
if v.cfg.VspClosed {
v.log.Warnf("")
v.log.Warnf("\tWARNING: Config --vspclosed is set. This will prevent vspd from accepting new tickets.")
v.log.Warnf("")
}
// Defer shutdown tasks. // Defer shutdown tasks.
defer v.log.Criticalf("Shutdown complete")
const writeBackup = true const writeBackup = true
defer v.db.Close(writeBackup) defer v.db.Close(writeBackup)
defer v.dcrd.Close() defer v.dcrd.Close()