fslog_instance.go 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. package fslog
  2. import (
  3. "go.uber.org/zap"
  4. "go.uber.org/zap/zapcore"
  5. "os"
  6. "path/filepath"
  7. "runtime/debug"
  8. )
  9. var logger *zap.Logger
  10. const logDir = "logs"
  11. func init() {
  12. if !pathExists(logDir) {
  13. err := os.MkdirAll(logDir, os.ModeDir|os.ModePerm)
  14. if err != nil {
  15. panic(err)
  16. }
  17. }
  18. logFilePath := filepath.Join(logDir, "log")
  19. file, err := os.Create(logFilePath)
  20. if err != nil {
  21. panic(err)
  22. }
  23. developmentEncoderConfig := zap.NewDevelopmentEncoderConfig()
  24. developmentEncoderConfig.EncodeLevel = zapcore.CapitalColorLevelEncoder
  25. encoder := zapcore.NewConsoleEncoder(developmentEncoderConfig)
  26. core := zapcore.NewTee(
  27. zapcore.NewCore(encoder, zapcore.AddSync(file), zapcore.DebugLevel),
  28. zapcore.NewCore(encoder, zapcore.AddSync(os.Stdout), zapcore.DebugLevel),
  29. )
  30. logger = zap.New(core, zap.AddCaller())
  31. }
  32. func Info(serviceName string, funcName string, callName string, message string) {
  33. callerFields := getCallerInfoForLog(serviceName, funcName, callName)
  34. logger.Info(message, callerFields...)
  35. }
  36. func Error(serviceName string, funcName string, callName string, message string) {
  37. callerFields := getCallerInfoForLog(serviceName, funcName, callName)
  38. logger.Error(message+"\n"+string(debug.Stack()), callerFields...)
  39. }
  40. func Debug(serviceName string, funcName string, callName string, message string) {
  41. callerFields := getCallerInfoForLog(serviceName, funcName, callName)
  42. logger.Debug(message, callerFields...)
  43. }
  44. func Warning(serviceName string, funcName string, callName string, message string) {
  45. callerFields := getCallerInfoForLog(serviceName, funcName, callName)
  46. logger.Warn(message, callerFields...)
  47. }
  48. func getCallerInfoForLog(serviceName string, funcName string, callName string) []zap.Field {
  49. return []zap.Field{
  50. zap.String("service", serviceName),
  51. zap.String("function", funcName),
  52. zap.String("call", callName),
  53. }
  54. }
  55. func pathExists(path string) bool {
  56. _, err := os.Stat(path)
  57. if err == nil {
  58. return true
  59. }
  60. if os.IsNotExist(err) {
  61. return false
  62. }
  63. return false
  64. }