aldikhan13

custom logger

Aug 11th, 2025
434
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Go 4.09 KB | None | 0 0
  1. package pkg
  2.  
  3. import (
  4.     "os"
  5.     "time"
  6.  
  7.     "github.com/sirupsen/logrus"
  8.  
  9.     sdk_cons "github.com/PT-UMKM-Pintar-Indonesia/shared-sdk/constants"
  10.     sdk_dto "github.com/PT-UMKM-Pintar-Indonesia/shared-sdk/dtos"
  11.     sdk_helper "github.com/PT-UMKM-Pintar-Indonesia/shared-sdk/helpers"
  12. )
  13.  
  14. func Logrus(Type string, Msg any, Args ...any) {
  15.     format := false
  16.     logrus.SetFormatter(&logrus.TextFormatter{
  17.         ForceColors:     true,
  18.         TimestampFormat: time.RFC3339,
  19.     })
  20.  
  21.     if Args != nil {
  22.         format = true
  23.     }
  24.  
  25.     switch Type {
  26.  
  27.     case sdk_cons.INFO:
  28.         if format {
  29.             logrus.Infof(Msg.(string), Args...)
  30.         } else {
  31.             logrus.Info(Msg)
  32.         }
  33.  
  34.     case sdk_cons.ERROR:
  35.         if format {
  36.             logrus.Errorf(Msg.(string), Args...)
  37.         } else {
  38.             logrus.Error(Msg)
  39.         }
  40.  
  41.     case sdk_cons.PRINT:
  42.         if format {
  43.             logrus.Printf(Msg.(string), Args...)
  44.         } else {
  45.             logrus.Print(Msg)
  46.         }
  47.  
  48.     case sdk_cons.FATAL:
  49.         if format {
  50.             logrus.Fatalf(Msg.(string), Args...)
  51.         } else {
  52.             logrus.Fatal(Msg)
  53.         }
  54.  
  55.     case sdk_cons.DEBUG:
  56.         if format {
  57.             logrus.Debugf(Msg.(string), Args...)
  58.         } else {
  59.             logrus.Debug(Msg)
  60.         }
  61.  
  62.     case sdk_cons.PANIC:
  63.         if format {
  64.             logrus.Panicf(Msg.(string), Args...)
  65.         } else {
  66.             logrus.Panic(Msg)
  67.         }
  68.  
  69.     case sdk_cons.TRACE:
  70.         if format {
  71.             logrus.Tracef(Msg.(string), Args...)
  72.         } else {
  73.             logrus.Trace(Msg)
  74.         }
  75.  
  76.     default:
  77.         logrus.Println(Msg)
  78.  
  79.     }
  80. }
  81.  
  82. func LogrusCustomLogger(req sdk_dto.Request[sdk_dto.LogrusCustomLogger]) ([]byte, error) {
  83.     logger := logrus.New()
  84.  
  85.     if req.Option.FileName != sdk_cons.EMPTY {
  86.         file, err := os.OpenFile(req.Option.FileName, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
  87.         if err != nil {
  88.             return nil, err
  89.         }
  90.  
  91.         if req.Option.FileFormatter == nil {
  92.             req.Option.FileFormatter = &logrus.JSONFormatter{
  93.                 TimestampFormat: sdk_cons.DATE_TIME_FORMAT,
  94.             }
  95.         }
  96.  
  97.         logger.SetOutput(file)
  98.         logger.SetFormatter(req.Option.FileFormatter)
  99.     }
  100.  
  101.     lg := logger.WithFields(req.Option.Fields)
  102.  
  103.     if req.Option.CustomFields != nil {
  104.         fields := logrus.Fields{}
  105.  
  106.         if err := sdk_helper.NewTransform().SrcToDest(req.Option.CustomFields, &fields); err != nil {
  107.             return nil, err
  108.         }
  109.  
  110.         lg = logger.WithFields(fields)
  111.     }
  112.  
  113.     switch req.Option.Type {
  114.  
  115.     case sdk_cons.WARN:
  116.         if req.Option.CustomMessage != sdk_cons.EMPTY && req.Option.Args != nil {
  117.             lg.Warnf(req.Body.CustomMessage, req.Option.Args)
  118.         } else {
  119.             lg.Warn(req.Option.Args)
  120.         }
  121.  
  122.     case sdk_cons.TRACE:
  123.         if req.Option.CustomMessage != sdk_cons.EMPTY && req.Option.Args != nil {
  124.             lg.Tracef(req.Body.CustomMessage, req.Option.Args)
  125.         } else {
  126.             lg.Trace(req.Option.Args)
  127.         }
  128.  
  129.     case sdk_cons.DEBUG:
  130.         if req.Option.CustomMessage != sdk_cons.EMPTY && req.Option.Args != nil {
  131.             lg.Debugf(req.Body.CustomMessage, req.Option.Args)
  132.         } else {
  133.             lg.Debug(req.Option.Args)
  134.         }
  135.  
  136.     case sdk_cons.ERROR:
  137.         if req.Option.CustomMessage != sdk_cons.EMPTY && req.Option.Args != nil {
  138.             lg.Errorf(req.Body.CustomMessage, req.Option.Args)
  139.         } else {
  140.             lg.Error(req.Option.Args)
  141.         }
  142.  
  143.     case sdk_cons.INFO:
  144.         if req.Option.CustomMessage != sdk_cons.EMPTY && req.Option.Args != nil {
  145.             lg.Infof(req.Body.CustomMessage, req.Option.Args)
  146.         } else {
  147.             lg.Info(req.Option.Args)
  148.         }
  149.  
  150.     case sdk_cons.PANIC:
  151.         if req.Option.CustomMessage != sdk_cons.EMPTY && req.Option.Args != nil {
  152.             lg.Panicf(req.Body.CustomMessage, req.Option.Args)
  153.         } else {
  154.             lg.Panic(req.Option.Args)
  155.         }
  156.  
  157.     case sdk_cons.FATAL:
  158.         if req.Option.CustomMessage != sdk_cons.EMPTY && req.Option.Args != nil {
  159.             lg.Fatalf(req.Body.CustomMessage, req.Option.Args)
  160.         } else {
  161.             lg.Fatal(req.Option.Args)
  162.         }
  163.  
  164.     default:
  165.         if req.Option.CustomMessage != sdk_cons.EMPTY && req.Option.Args != nil {
  166.             lg.Printf(req.Body.CustomMessage, req.Option.Args)
  167.         } else {
  168.             lg.Println(req.Option.Args)
  169.         }
  170.     }
  171.  
  172.     if req.Option.Entry == nil {
  173.         req.Option.Entry = lg.WithTime(time.Now())
  174.     }
  175.  
  176.     if req.Option.TextFormatter != nil {
  177.         return req.Option.TextFormatter.Format(req.Option.Entry)
  178.     } else if req.Option.JSONFormatter != nil {
  179.         return req.Option.JSONFormatter.Format(req.Option.Entry)
  180.     }
  181.  
  182.     return nil, nil
  183. }
  184.  
Advertisement
Add Comment
Please, Sign In to add comment