| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- package fslog
- import (
- "go.uber.org/zap"
- "go.uber.org/zap/zapcore"
- "os"
- "path/filepath"
- "runtime/debug"
- )
- var logger *zap.Logger
- const logDir = "logs"
- func init() {
- if !pathExists(logDir) {
- err := os.MkdirAll(logDir, os.ModeDir|os.ModePerm)
- if err != nil {
- panic(err)
- }
- }
- logFilePath := filepath.Join(logDir, "log")
- file, err := os.Create(logFilePath)
- if err != nil {
- panic(err)
- }
- developmentEncoderConfig := zap.NewDevelopmentEncoderConfig()
- developmentEncoderConfig.EncodeLevel = zapcore.CapitalColorLevelEncoder
- encoder := zapcore.NewConsoleEncoder(developmentEncoderConfig)
- core := zapcore.NewTee(
- zapcore.NewCore(encoder, zapcore.AddSync(file), zapcore.DebugLevel),
- zapcore.NewCore(encoder, zapcore.AddSync(os.Stdout), zapcore.DebugLevel),
- )
- logger = zap.New(core, zap.AddCaller())
- }
- func Info(serviceName string, funcName string, callName string, message string) {
- callerFields := getCallerInfoForLog(serviceName, funcName, callName)
- logger.Info(message, callerFields...)
- }
- func Error(serviceName string, funcName string, callName string, message string) {
- callerFields := getCallerInfoForLog(serviceName, funcName, callName)
- logger.Error(message+"\n"+string(debug.Stack()), callerFields...)
- }
- func Debug(serviceName string, funcName string, callName string, message string) {
- callerFields := getCallerInfoForLog(serviceName, funcName, callName)
- logger.Debug(message, callerFields...)
- }
- func Warning(serviceName string, funcName string, callName string, message string) {
- callerFields := getCallerInfoForLog(serviceName, funcName, callName)
- logger.Warn(message, callerFields...)
- }
- func getCallerInfoForLog(serviceName string, funcName string, callName string) []zap.Field {
- return []zap.Field{
- zap.String("service", serviceName),
- zap.String("function", funcName),
- zap.String("call", callName),
- }
- }
- func pathExists(path string) bool {
- _, err := os.Stat(path)
- if err == nil {
- return true
- }
- if os.IsNotExist(err) {
- return false
- }
- return false
- }
|