mirror of https://github.com/usememos/memos
				
				
				
			feat: graceful shutdown server (#1016)
							parent
							
								
									2d14047c73
								
							
						
					
					
						commit
						1ace332152
					
				@ -0,0 +1,67 @@
 | 
			
		||||
// Package log implements a simple logging package.
 | 
			
		||||
package log
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"go.uber.org/zap"
 | 
			
		||||
	"go.uber.org/zap/zapcore"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
var (
 | 
			
		||||
	// `gl` is the global logger.
 | 
			
		||||
	// Other packages should use public methods such as Info/Error to do the logging.
 | 
			
		||||
	// For other types of logging, e.g. logging to a separate file, they should use their own loggers.
 | 
			
		||||
	gl     *zap.Logger
 | 
			
		||||
	gLevel zap.AtomicLevel
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// Initializes the global console logger.
 | 
			
		||||
func init() {
 | 
			
		||||
	gLevel = zap.NewAtomicLevelAt(zap.InfoLevel)
 | 
			
		||||
	gl, _ = zap.Config{
 | 
			
		||||
		Level:       gLevel,
 | 
			
		||||
		Development: true,
 | 
			
		||||
		// Use "console" to print readable stacktrace.
 | 
			
		||||
		Encoding:         "console",
 | 
			
		||||
		EncoderConfig:    zap.NewDevelopmentEncoderConfig(),
 | 
			
		||||
		OutputPaths:      []string{"stderr"},
 | 
			
		||||
		ErrorOutputPaths: []string{"stderr"},
 | 
			
		||||
	}.Build(
 | 
			
		||||
		// Skip one caller stack to locate the correct caller.
 | 
			
		||||
		zap.AddCallerSkip(1),
 | 
			
		||||
	)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// SetLevel wraps the zap Level's SetLevel method.
 | 
			
		||||
func SetLevel(level zapcore.Level) {
 | 
			
		||||
	gLevel.SetLevel(level)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// EnabledLevel wraps the zap Level's Enabled method.
 | 
			
		||||
func EnabledLevel(level zapcore.Level) bool {
 | 
			
		||||
	return gLevel.Enabled(level)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Debug wraps the zap Logger's Debug method.
 | 
			
		||||
func Debug(msg string, fields ...zap.Field) {
 | 
			
		||||
	gl.Debug(msg, fields...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Info wraps the zap Logger's Info method.
 | 
			
		||||
func Info(msg string, fields ...zap.Field) {
 | 
			
		||||
	gl.Info(msg, fields...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Warn wraps the zap Logger's Warn method.
 | 
			
		||||
func Warn(msg string, fields ...zap.Field) {
 | 
			
		||||
	gl.Warn(msg, fields...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Error wraps the zap Logger's Error method.
 | 
			
		||||
func Error(msg string, fields ...zap.Field) {
 | 
			
		||||
	gl.Error(msg, fields...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Sync wraps the zap Logger's Sync method.
 | 
			
		||||
func Sync() {
 | 
			
		||||
	_ = gl.Sync()
 | 
			
		||||
}
 | 
			
		||||
					Loading…
					
					
				
		Reference in New Issue