mirror of
https://github.com/Eggbertx/gochan.git
synced 2025-09-04 10:06:24 -07:00
Use zerolog for logging to console (with few exceptions) for consistency
This commit is contained in:
parent
48fb11a199
commit
47afdd0ca8
5 changed files with 61 additions and 74 deletions
|
@ -37,26 +37,30 @@ func cleanup() {
|
|||
}
|
||||
|
||||
func main() {
|
||||
fmt.Printf("Starting gochan v%s\n", versionStr)
|
||||
gcutil.LogInfo().Str("version", versionStr).Msg("Starting gochan")
|
||||
fatalEv := gcutil.LogFatal()
|
||||
defer func() {
|
||||
fatalEv.Discard()
|
||||
cleanup()
|
||||
}()
|
||||
err := config.InitConfig(versionStr)
|
||||
if err != nil {
|
||||
jsonLocation := config.JSONLocation()
|
||||
if jsonLocation != "" {
|
||||
fmt.Printf("Failed to load configuration from %q: %s\n", jsonLocation, err.Error())
|
||||
} else {
|
||||
fmt.Printf("Failed to load configuration: %s\n", err.Error())
|
||||
}
|
||||
cleanup()
|
||||
os.Exit(1)
|
||||
fatalEv.Err(err).Caller().
|
||||
Str("jsonLocation", config.JSONLocation()).
|
||||
Msg("Unable to load configuration")
|
||||
}
|
||||
|
||||
uid, gid := config.GetUser()
|
||||
systemCritical := config.GetSystemCriticalConfig()
|
||||
if err = gcutil.InitLogs(systemCritical.LogDir, zerolog.InfoLevel, uid, gid); err != nil {
|
||||
fmt.Println("Error opening logs:", err.Error())
|
||||
cleanup()
|
||||
os.Exit(1)
|
||||
if err = gcutil.InitLogs(systemCritical.LogDir, systemCritical.LogLevel(), uid, gid); err != nil {
|
||||
fatalEv.Err(err).Caller().
|
||||
Str("logDir", systemCritical.LogDir).
|
||||
Int("uid", uid).
|
||||
Int("gid", gid).
|
||||
Msg("Unable to open logs")
|
||||
}
|
||||
fatalEv.Discard()
|
||||
fatalEv = gcutil.LogFatal() // reset fatalEv to use log file
|
||||
|
||||
testIP := os.Getenv("GC_TESTIP")
|
||||
if testIP != "" {
|
||||
|
@ -65,16 +69,13 @@ func main() {
|
|||
}
|
||||
|
||||
if err = gcplugin.LoadPlugins(systemCritical.Plugins); err != nil {
|
||||
cleanup()
|
||||
gcutil.LogFatal().Err(err).Msg("failed loading plugins")
|
||||
fatalEv.Err(err).Msg("Failed loading plugins")
|
||||
}
|
||||
|
||||
events.TriggerEvent("startup")
|
||||
|
||||
if err = gcsql.ConnectToDB(&systemCritical.SQLConfig); err != nil {
|
||||
fmt.Println("Failed to connect to the database:", err.Error())
|
||||
cleanup()
|
||||
gcutil.LogFatal().Err(err).Msg("Failed to connect to the database")
|
||||
fatalEv.Err(err).Msg("Failed to connect to the database")
|
||||
}
|
||||
events.TriggerEvent("db-connected")
|
||||
gcutil.LogInfo().
|
||||
|
@ -87,33 +88,25 @@ func main() {
|
|||
gcutil.LogFatal().Err(err).Msg("Failed to initialize the database")
|
||||
}
|
||||
events.TriggerEvent("db-initialized")
|
||||
events.RegisterEvent([]string{"db-views-reset"}, func(_ string, _ ...any) error {
|
||||
gcutil.LogInfo().Msg("SQL views reset")
|
||||
return nil
|
||||
})
|
||||
if err = gcsql.ResetViews(); err != nil {
|
||||
gcutil.LogFatal().Err(err).Caller().Msg("Failed resetting SQL views")
|
||||
fatalEv.Err(err).Caller().Msg("Failed resetting SQL views")
|
||||
}
|
||||
|
||||
parseCommandLine()
|
||||
parseCommandLine(fatalEv)
|
||||
serverutil.InitMinifier()
|
||||
siteCfg := config.GetSiteConfig()
|
||||
if err = geoip.SetupGeoIP(siteCfg.GeoIPType, siteCfg.GeoIPOptions); err != nil {
|
||||
cleanup()
|
||||
gcutil.LogFatal().Err(err).Msg("Unable to initialize GeoIP")
|
||||
fatalEv.Err(err).Caller().Msg("Unable to initialize GeoIP")
|
||||
}
|
||||
posting.InitCaptcha()
|
||||
|
||||
if err = gctemplates.InitTemplates(); err != nil {
|
||||
fmt.Println("Failed initializing templates:", err.Error())
|
||||
cleanup()
|
||||
gcutil.LogFatal().Err(err).Send()
|
||||
fatalEv.Err(err).Caller().Msg("Unable to initialize templates")
|
||||
}
|
||||
|
||||
for _, board := range gcsql.AllBoards {
|
||||
if _, err = board.DeleteOldThreads(); err != nil {
|
||||
cleanup()
|
||||
gcutil.LogFatal().Err(err).Caller().
|
||||
fatalEv.Err(err).Caller().
|
||||
Str("board", board.Dir).
|
||||
Msg("Failed deleting old threads")
|
||||
}
|
||||
|
@ -122,18 +115,13 @@ func main() {
|
|||
sc := make(chan os.Signal, 1)
|
||||
signal.Notify(sc, syscall.SIGINT, syscall.SIGTERM, os.Interrupt)
|
||||
posting.InitPosting()
|
||||
if err = gcutil.InitLogs(systemCritical.LogDir, systemCritical.LogLevel(), uid, gid); err != nil {
|
||||
fmt.Println("Error opening logs:", err.Error())
|
||||
cleanup()
|
||||
os.Exit(1) // skipcq: CRT-D0011
|
||||
}
|
||||
defer events.TriggerEvent("shutdown")
|
||||
manage.InitManagePages()
|
||||
go initServer()
|
||||
<-sc
|
||||
}
|
||||
|
||||
func parseCommandLine() {
|
||||
func parseCommandLine(fatalEv *zerolog.Event) {
|
||||
var newstaff string
|
||||
var delstaff string
|
||||
var rebuild string
|
||||
|
@ -157,7 +145,7 @@ func parseCommandLine() {
|
|||
rebuildFlag = buildAll
|
||||
}
|
||||
if rebuildFlag > 0 {
|
||||
startupRebuild(rebuildFlag)
|
||||
startupRebuild(rebuildFlag, fatalEv)
|
||||
}
|
||||
|
||||
if newstaff != "" {
|
||||
|
@ -166,21 +154,16 @@ func parseCommandLine() {
|
|||
flag.Usage()
|
||||
os.Exit(1)
|
||||
}
|
||||
fmt.Printf("Creating new staff: %q, with password: %q and rank: %d from command line", arr[0], arr[1], rank)
|
||||
if _, err = gcsql.NewStaff(arr[0], arr[1], rank); err != nil {
|
||||
fmt.Printf("Failed creating new staff account for %q: %s\n", arr[0], err.Error())
|
||||
gcutil.LogFatal().Err(err).Caller().
|
||||
Str("staff", "add").
|
||||
fatalEv.Err(err).Caller().
|
||||
Str("source", "commandLine").
|
||||
Str("username", arr[0]).
|
||||
Msg("Failed creating new staff account")
|
||||
}
|
||||
gcutil.LogInfo().
|
||||
Str("staff", "add").
|
||||
Str("source", "commandLine").
|
||||
Str("username", arr[0]).
|
||||
Msg("New staff account created")
|
||||
fmt.Printf("New staff account created: %s\n", arr[0])
|
||||
os.Exit(0)
|
||||
}
|
||||
if delstaff != "" {
|
||||
|
@ -195,10 +178,12 @@ func parseCommandLine() {
|
|||
answer = strings.ToLower(answer)
|
||||
if answer == "y" || answer == "yes" {
|
||||
if err = gcsql.DeactivateStaff(delstaff); err != nil {
|
||||
fmt.Printf("Error deleting %q: %s", delstaff, err.Error())
|
||||
gcutil.LogFatal().Str("staff", "delete").Err(err).Send()
|
||||
fatalEv.Err(err).Caller().
|
||||
Str("source", "commandLine").
|
||||
Str("username", delstaff).
|
||||
Msg("Unable to delete staff account")
|
||||
}
|
||||
gcutil.LogInfo().Str("newStaff", delstaff).Send()
|
||||
gcutil.LogInfo().Str("newStaff", delstaff).Msg("Staff account deleted")
|
||||
} else {
|
||||
fmt.Println("Not deleting.")
|
||||
}
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
|
||||
"github.com/gochan-org/gochan/pkg/building"
|
||||
|
@ -9,6 +8,7 @@ import (
|
|||
"github.com/gochan-org/gochan/pkg/gctemplates"
|
||||
"github.com/gochan-org/gochan/pkg/gcutil"
|
||||
"github.com/gochan-org/gochan/pkg/server/serverutil"
|
||||
"github.com/rs/zerolog"
|
||||
)
|
||||
|
||||
const (
|
||||
|
@ -19,53 +19,48 @@ const (
|
|||
buildAll = buildBoards | buildFront | buildJS
|
||||
)
|
||||
|
||||
func startupRebuild(buildFlag int) {
|
||||
func startupRebuild(buildFlag int, fatalEv *zerolog.Event) {
|
||||
var err error
|
||||
serverutil.InitMinifier()
|
||||
if err = gctemplates.InitTemplates(); err != nil {
|
||||
fmt.Println("Error initializing templates:", err.Error())
|
||||
gcutil.Logger().Fatal().
|
||||
fatalEv.Err(err).Caller().
|
||||
Str("building", "initialization").
|
||||
Err(err).Send()
|
||||
Msg("Unable to initialize templates")
|
||||
}
|
||||
|
||||
if buildFlag&buildBoards > 0 {
|
||||
gcsql.ResetBoardSectionArrays()
|
||||
if err = building.BuildBoardListJSON(); err != nil {
|
||||
fmt.Println("Error building section array:", err.Error())
|
||||
gcutil.Logger().Fatal().
|
||||
fatalEv.Err(err).Caller().
|
||||
Str("building", "sections").
|
||||
Err(err).Send()
|
||||
Msg("Unable to build section array")
|
||||
}
|
||||
|
||||
if err = building.BuildBoards(true); err != nil {
|
||||
fmt.Println("Error building boards:", err.Error())
|
||||
gcutil.Logger().Fatal().
|
||||
fatalEv.Err(err).Caller().
|
||||
Str("building", "boards").
|
||||
Err(err).Send()
|
||||
Msg("Unable to build boards")
|
||||
}
|
||||
fmt.Println("Boards built successfully")
|
||||
gcutil.LogInfo().Msg("Boards built successfully")
|
||||
}
|
||||
|
||||
if buildFlag&buildJS > 0 {
|
||||
if err = building.BuildJS(); err != nil {
|
||||
fmt.Println("Error building JS:", err.Error())
|
||||
gcutil.Logger().Fatal().
|
||||
fatalEv.Err(err).Caller().
|
||||
Str("building", "js").
|
||||
Err(err).Send()
|
||||
Msg("Unable to build consts.js")
|
||||
}
|
||||
fmt.Println("JavaScript built successfully")
|
||||
gcutil.LogInfo().Msg("consts.js built successfully")
|
||||
}
|
||||
|
||||
if buildFlag&buildFront > 0 {
|
||||
if err = building.BuildFrontPage(); err != nil {
|
||||
fmt.Println("Error building front page:", err.Error())
|
||||
gcutil.Logger().Fatal().
|
||||
fatalEv.Err(err).Caller().
|
||||
Str("building", "front").
|
||||
Err(err).Send()
|
||||
Msg("Unable to build front page")
|
||||
}
|
||||
fmt.Println("Front page built successfully")
|
||||
gcutil.LogInfo().Msg("Front page built successfully")
|
||||
}
|
||||
fmt.Println("Finished building without errors, exiting.")
|
||||
gcutil.LogInfo().Msg("Finished building without errors, exiting.")
|
||||
os.Exit(0)
|
||||
}
|
||||
|
|
|
@ -84,7 +84,9 @@ func updateAnnouncementsCallback(_ http.ResponseWriter, request *http.Request, s
|
|||
Msg("Unable to update announcement")
|
||||
return "", errors.New("unable to update announcement")
|
||||
}
|
||||
fmt.Printf("Updated announcement #%d, message = %s\n", announcement.ID, announcement.Message)
|
||||
gcutil.LogInfo().
|
||||
Int("announcementID", int(announcement.ID)).
|
||||
Msg("Updated announcement")
|
||||
}
|
||||
} else if deleteIdStr != "" {
|
||||
if deleteID, err = strconv.Atoi(deleteIdStr); err != nil {
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package posting
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
|
@ -105,19 +106,24 @@ func ServeCaptcha(writer http.ResponseWriter, request *http.Request) {
|
|||
if request.Method == "POST" {
|
||||
result, err := submitCaptchaResponse(request)
|
||||
if err != nil {
|
||||
errEv.Err(err).Caller().Send()
|
||||
errEv.Err(err).Caller().Msg("Error submitting CAPTCHA")
|
||||
server.ServeError(writer, "Error checking CAPTCHA results: "+err.Error(), wantsJSON, nil)
|
||||
return
|
||||
}
|
||||
fmt.Println("Success:", result)
|
||||
gcutil.LogInfo().
|
||||
Bool("result", result).
|
||||
Str("IP", gcutil.GetRealIP(request)).
|
||||
Msg("Got CAPTCHA result")
|
||||
}
|
||||
var buf bytes.Buffer
|
||||
err := serverutil.MinifyTemplate(gctemplates.Captcha, map[string]any{
|
||||
"boardConfig": config.GetBoardConfig(""),
|
||||
"boards": gcsql.AllBoards,
|
||||
"siteKey": captchaCfg.SiteKey,
|
||||
}, writer, "text/html")
|
||||
}, &buf, "text/html")
|
||||
if err != nil {
|
||||
errEv.Err(err).Caller().Send()
|
||||
errEv.Err(err).Caller().Msg("Unable to build CAPTCHA template")
|
||||
server.ServeError(writer, "Error serving CAPTCHA: "+err.Error(), wantsJSON, nil)
|
||||
}
|
||||
buf.WriteTo(writer)
|
||||
}
|
||||
|
|
|
@ -553,7 +553,6 @@ func MakePost(writer http.ResponseWriter, request *http.Request) {
|
|||
|
||||
// prune posts from cyclic thread
|
||||
for _, prunePost := range toBePruned {
|
||||
fmt.Printf("%#v\n", prunePost)
|
||||
p := &gcsql.Post{ID: prunePost.PostID, ThreadID: prunePost.ThreadID}
|
||||
|
||||
if err = p.Delete(); err != nil {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue