mirror of
https://github.com/QuilibriumNetwork/ceremonyclient.git
synced 2026-02-21 10:27:26 +08:00
* wip: conversion of hotstuff from flow into Q-oriented model * bulk of tests * remaining non-integration tests * add integration test, adjust log interface, small tweaks * further adjustments, restore full pacemaker shape * add component lifecycle management+supervisor * further refinements * resolve timeout hanging * mostly finalized state for consensus * bulk of engine swap out * lifecycle-ify most types * wiring nearly complete, missing needed hooks for proposals * plugged in, vetting message validation paths * global consensus, plugged in and verified * app shard now wired in too * do not decode empty keys.yml (#456) * remove obsolete engine.maxFrames config parameter (#454) * default to Info log level unless debug is enabled (#453) * respect config's "logging" section params, remove obsolete single-file logging (#452) * Trivial code cleanup aiming to reduce Go compiler warnings (#451) * simplify range traversal * simplify channel read for single select case * delete rand.Seed() deprecated in Go 1.20 and no-op as of Go 1.24 * simplify range traversal * simplify channel read for single select case * remove redundant type from array * simplify range traversal * simplify channel read for single select case * RC slate * finalize 2.1.0.5 * Update comments in StrictMonotonicCounter Fix comment formatting and clarify description. --------- Co-authored-by: Black Swan <3999712+blacks1ne@users.noreply.github.com>
73 lines
1.2 KiB
Go
73 lines
1.2 KiB
Go
package logging
|
|
|
|
import (
|
|
"fmt"
|
|
"io"
|
|
"os"
|
|
"path/filepath"
|
|
"time"
|
|
|
|
"go.uber.org/zap"
|
|
"go.uber.org/zap/zapcore"
|
|
"gopkg.in/natefinch/lumberjack.v2"
|
|
)
|
|
|
|
func filenameForCore(coreId uint) string {
|
|
if coreId == 0 {
|
|
return "master.log"
|
|
}
|
|
return fmt.Sprintf("worker-%d.log", coreId)
|
|
}
|
|
|
|
func NewRotatingFileLogger(
|
|
debug bool,
|
|
coreId uint,
|
|
dir string,
|
|
maxSize int,
|
|
maxBackups int,
|
|
maxAge int,
|
|
compress bool,
|
|
) (
|
|
*zap.Logger,
|
|
io.Closer,
|
|
error,
|
|
) {
|
|
if err := os.MkdirAll(dir, 0o755); err != nil {
|
|
return nil, nil, err
|
|
}
|
|
|
|
filename := filenameForCore(coreId)
|
|
|
|
logFilePath := filepath.Join(dir, filename)
|
|
|
|
rot := &lumberjack.Logger{
|
|
Filename: logFilePath,
|
|
MaxSize: maxSize,
|
|
MaxBackups: maxBackups,
|
|
MaxAge: maxAge,
|
|
Compress: compress,
|
|
}
|
|
|
|
encCfg := zap.NewProductionEncoderConfig()
|
|
if debug {
|
|
encCfg = zap.NewDevelopmentEncoderConfig()
|
|
}
|
|
encCfg.TimeKey = "ts"
|
|
encCfg.EncodeTime = zapcore.TimeEncoderOfLayout(time.RFC3339)
|
|
enc := zapcore.NewConsoleEncoder(encCfg)
|
|
|
|
ws := zapcore.AddSync(rot)
|
|
|
|
logLevel := zap.InfoLevel
|
|
if debug {
|
|
logLevel = zap.DebugLevel
|
|
}
|
|
|
|
core := zapcore.NewCore(enc, ws, logLevel)
|
|
logger := zap.New(core, zap.AddCaller(), zap.Fields(
|
|
zap.Uint("coreId", coreId),
|
|
))
|
|
|
|
return logger, rot, nil
|
|
}
|