3
0

Rework/cleanup log stacktrace level, add LOG_STACKTRACE_LEVEL to control it

This commit is contained in:
Denis Arh
2021-05-20 09:35:34 +02:00
parent c900374723
commit 28e1774cd2
16 changed files with 59 additions and 46 deletions
+1 -1
View File
@@ -61,7 +61,7 @@ func (app *CortezaApp) Setup() (err error) {
{
// Raise warnings about experimental parts that are enabled
log := app.Log.WithOptions(zap.AddStacktrace(zap.PanicLevel), zap.WithCaller(false))
log := app.Log.WithOptions(zap.WithCaller(false))
if app.Opt.Federation.Enabled {
log.Warn("Record Federation is still in EXPERIMENTAL phase")
+6 -7
View File
@@ -2,6 +2,12 @@ package app
import (
"context"
"net/http"
"path"
"regexp"
"strings"
"sync"
automationRest "github.com/cortezaproject/corteza-server/automation/rest"
composeRest "github.com/cortezaproject/corteza-server/compose/rest"
"github.com/cortezaproject/corteza-server/docs"
@@ -15,11 +21,6 @@ import (
"github.com/cortezaproject/corteza-server/system/scim"
"github.com/go-chi/chi"
"go.uber.org/zap"
"net/http"
"path"
"regexp"
"strings"
"sync"
)
func (app *CortezaApp) Serve(ctx context.Context) (err error) {
@@ -58,7 +59,6 @@ func (app *CortezaApp) mountHttpRoutes(r chi.Router) {
func() {
if ho.WebappEnabled && ho.ApiEnabled && ho.ApiBaseUrl == ho.WebappBaseUrl {
app.Log.
WithOptions(zap.AddStacktrace(zap.PanicLevel)).
Warn("client web applications and api can not use the same base URL: '" + ho.WebappBaseUrl + "'")
ho.WebappEnabled = false
}
@@ -122,7 +122,6 @@ func (app *CortezaApp) mountHttpRoutes(r chi.Router) {
if app.Opt.SCIM.Secret == "" {
app.Log.
WithOptions(zap.AddStacktrace(zap.PanicLevel)).
Error("SCIM secret empty")
}
+1 -1
View File
@@ -51,7 +51,7 @@ func New(ctx context.Context, log *zap.Logger, s store.Storer, opt options.AuthO
defClient *types.AuthClient
)
log = log.Named("auth").WithOptions(zap.AddStacktrace(zap.PanicLevel))
log = log.Named("auth")
ctx = actionlog.RequestOriginToContext(ctx, actionlog.RequestOrigin_Auth)
svc = &service{
+2 -2
View File
@@ -1,6 +1,8 @@
package oauth2
import (
"strings"
"github.com/cortezaproject/corteza-server/pkg/logger"
"github.com/cortezaproject/corteza-server/pkg/options"
"github.com/dgrijalva/jwt-go"
@@ -9,7 +11,6 @@ import (
"github.com/go-oauth2/oauth2/v4/manage"
"github.com/go-oauth2/oauth2/v4/server"
"go.uber.org/zap"
"strings"
)
const (
@@ -90,7 +91,6 @@ func NewServer(manager *manage.Manager) *server.Server {
}
logger.Default().
WithOptions(zap.AddStacktrace(zap.PanicLevel)).
Error(msg)
})
-1
View File
@@ -486,7 +486,6 @@ func (svc *trigger) registerTriggers(wf *types.Workflow, runAs auth.Identifiable
g *wfexec.Graph
issues types.WorkflowIssueSet
wfLog = svc.log.
WithOptions(zap.AddStacktrace(zap.DPanicLevel)).
With(zap.Uint64("workflowID", wf.ID))
// register only enabled, undeleted workflows
+3 -3
View File
@@ -1,12 +1,13 @@
package values
import (
"strings"
"time"
"github.com/cortezaproject/corteza-server/compose/types"
"github.com/cortezaproject/corteza-server/pkg/expr"
"github.com/cortezaproject/corteza-server/pkg/logger"
"go.uber.org/zap"
"strings"
"time"
)
type (
@@ -25,7 +26,6 @@ func (f formatter) Run(m *types.Module, vv types.RecordValueSet) types.RecordVal
exprParser = expr.Parser()
log = logger.Default().
WithOptions(zap.AddStacktrace(zap.PanicLevel)).
With(zap.Uint64("module", m.ID))
)
+4 -4
View File
@@ -2,13 +2,14 @@ package values
import (
"fmt"
"github.com/cortezaproject/corteza-server/pkg/expr"
"github.com/cortezaproject/corteza-server/pkg/logger"
"go.uber.org/zap"
"strconv"
"strings"
"time"
"github.com/cortezaproject/corteza-server/pkg/expr"
"github.com/cortezaproject/corteza-server/pkg/logger"
"go.uber.org/zap"
"github.com/cortezaproject/corteza-server/compose/types"
)
@@ -60,7 +61,6 @@ func (s sanitizer) Run(m *types.Module, vv types.RecordValueSet) (out types.Reco
kind string
log = logger.Default().
WithOptions(zap.AddStacktrace(zap.PanicLevel)).
With(zap.Uint64("module", m.ID))
)
+1 -1
View File
@@ -655,7 +655,7 @@ func (svc service) exec(ctx context.Context, script string, runAs string, args S
zap.String("runAs", runAs),
zap.String("eventType", args.EventType()),
zap.String("resourceType", args.ResourceType()),
).WithOptions(zap.AddStacktrace(zap.FatalLevel))
)
)
log.Debug("triggered")
+18 -2
View File
@@ -36,9 +36,9 @@ func MakeDebugLogger() *zap.Logger {
panic(err)
}
logger.Debug("full debug mode enabled (LOG_DEBUG=true), enjoy all the colors and verbosity")
logger.Debug("full debug mode enabled (LOG_DEBUG=true)")
return logger
return applyStacktrace(logger, zap.DPanicLevel)
}
func Init() {
@@ -75,6 +75,22 @@ func Init() {
if err != nil {
panic(err)
}
// Add stacktrace ONLY for panics
defaultLogger = applyStacktrace(defaultLogger, zap.PanicLevel)
}
// applies configured stacktrace level
//
// By default it uses Panic or DPanic (depends if debug logger is used)
// This can be manipulated by setting LOG_STACKTRACE_LEVEL to
// value "debug", "info", "warn", "error", "dpanic", "panic", or "fatal"
func applyStacktrace(in *zap.Logger, def zapcore.Level) *zap.Logger {
if stl, has := os.LookupEnv("LOG_STACKTRACE_LEVEL"); has {
_ = def.UnmarshalText([]byte(stl))
}
return in.WithOptions(zap.AddStacktrace(def))
}
func Default() *zap.Logger {
+1 -1
View File
@@ -32,7 +32,7 @@ var (
)
func Setup(logger *zap.Logger, o options.MonitorOpt) {
log = logger.Named("monitor").WithOptions(zap.AddStacktrace(zap.PanicLevel))
log = logger.Named("monitor")
opt = o
}
+2 -3
View File
@@ -2,6 +2,8 @@ package provision
import (
"context"
"time"
"github.com/cortezaproject/corteza-server/pkg/errors"
"github.com/cortezaproject/corteza-server/pkg/id"
"github.com/cortezaproject/corteza-server/pkg/options"
@@ -10,12 +12,9 @@ import (
"github.com/cortezaproject/corteza-server/system/service"
"github.com/cortezaproject/corteza-server/system/types"
"go.uber.org/zap"
"time"
)
func Run(ctx context.Context, log *zap.Logger, s store.Storer, provisionOpt options.ProvisionOpt, authOpt options.AuthOpt) error {
log = log.WithOptions(zap.AddStacktrace(zap.PanicLevel))
ffn := []func() error{
func() error { return roles(ctx, s) },
+6 -5
View File
@@ -3,16 +3,17 @@ package webapp
import (
"bytes"
"fmt"
"github.com/cortezaproject/corteza-server/pkg/logger"
"github.com/cortezaproject/corteza-server/pkg/options"
"github.com/go-chi/chi"
"go.uber.org/zap"
"io"
"net/http"
"os"
"path"
"strings"
"time"
"github.com/cortezaproject/corteza-server/pkg/logger"
"github.com/cortezaproject/corteza-server/pkg/options"
"github.com/go-chi/chi"
"go.uber.org/zap"
)
var (
@@ -90,7 +91,7 @@ func serveIndex(opt options.HTTPServerOpt, indexHTML []byte, serve http.Handler)
return
}
logger.Default().WithOptions(zap.AddStacktrace(zap.PanicLevel)).Error(
logger.Default().Error(
"failed to serve static file",
zap.Error(err),
zap.Stringer("url", r.URL),
+5 -4
View File
@@ -1,6 +1,10 @@
package websocket
import (
"io"
"net/http"
"sync"
"github.com/cortezaproject/corteza-server/pkg/auth"
"github.com/cortezaproject/corteza-server/pkg/errors"
"github.com/cortezaproject/corteza-server/pkg/options"
@@ -8,9 +12,6 @@ import (
"github.com/dgrijalva/jwt-go"
"github.com/gorilla/websocket"
"go.uber.org/zap"
"io"
"net/http"
"sync"
)
var (
@@ -48,7 +49,7 @@ func Server(logger *zap.Logger, config options.WebsocketOpt) *server {
return &server{
config: config,
logger: logger.WithOptions(zap.AddStacktrace(zap.PanicLevel)).Named("websocket"),
logger: logger.Named("websocket"),
accessToken: auth.DefaultJwtHandler,
sessions: make(map[uint64]map[uint64]io.Writer),
}
+5 -5
View File
@@ -3,14 +3,15 @@ package wfexec
import (
"context"
"fmt"
"runtime/debug"
"sync"
"time"
"github.com/cortezaproject/corteza-server/pkg/auth"
"github.com/cortezaproject/corteza-server/pkg/expr"
"github.com/cortezaproject/corteza-server/pkg/id"
"github.com/cortezaproject/corteza-server/pkg/logger"
"go.uber.org/zap"
"runtime/debug"
"sync"
"time"
)
type (
@@ -181,7 +182,6 @@ func NewSession(ctx context.Context, g *Graph, oo ...SessionOpt) *Session {
}
s.log = s.log.
WithOptions(zap.AddStacktrace(zap.ErrorLevel)).
With(zap.Uint64("sessionID", s.id))
go s.worker(ctx)
@@ -566,7 +566,7 @@ func (s *Session) exec(ctx context.Context, st *State) (err error) {
} else {
// push logger to context but raise the stacktrace level to panic
// to prevent overly verbose traces
ctx = logger.ContextWithValue(ctx, log.WithOptions(zap.AddStacktrace(zap.PanicLevel)))
ctx = logger.ContextWithValue(ctx, log)
// Context received in exec() wil not have the identity we're expecting
// so we need to pull it from state owner and add it to new context
+2 -3
View File
@@ -5,10 +5,11 @@ import (
"database/sql/driver"
"errors"
"fmt"
"time"
"github.com/cortezaproject/corteza-server/pkg/logger"
"github.com/ngrok/sqlmw"
"go.uber.org/zap"
"time"
)
type (
@@ -44,8 +45,6 @@ func (ld debug) log(ctx context.Context) *zap.Logger {
// have the same stack trace, might
// need adjustment on individual fn bellow
zap.AddCallerSkip(9),
// never add stacktrace to these logs
zap.AddStacktrace(zap.FatalLevel),
)
}
+2 -3
View File
@@ -2,6 +2,7 @@ package rdbms
import (
"context"
"github.com/cortezaproject/corteza-server/pkg/logger"
"go.uber.org/zap"
)
@@ -12,9 +13,7 @@ import (
func (s Store) log(ctx context.Context) *zap.Logger {
return logger.ContextValue(ctx, s.logger).
Named("store.rdbms").
WithOptions(zap.AddCallerSkip(2)).
// Really not interested in call stack
WithOptions(zap.AddStacktrace(zap.FatalLevel))
WithOptions(zap.AddCallerSkip(2))
}
func (s Store) SetLogger(logger *zap.Logger) {