1
+ package main
2
+
3
+ import (
4
+ "fmt"
5
+ "log"
6
+ "os"
7
+ "time"
8
+ )
9
+
10
+ const (
11
+ colorReset = "\033 [0m"
12
+ colorRed = "\033 [31m"
13
+ colorGreen = "\033 [32m"
14
+ colorYellow = "\033 [33m"
15
+ colorBlue = "\033 [34m"
16
+ colorPurple = "\033 [35m"
17
+ colorCyan = "\033 [36m"
18
+ )
19
+
20
+ type Logger struct {
21
+ logger * log.Logger
22
+ }
23
+
24
+ func New () * Logger {
25
+ return & Logger {
26
+ logger : log .New (os .Stdout , "" , 0 ),
27
+ }
28
+ }
29
+
30
+ func (l * Logger ) formatMessage (level , format string , args ... interface {}) string {
31
+ timestamp := time .Now ().Format ("2006-01-02 15:04:05" )
32
+ message := fmt .Sprintf (format , args ... )
33
+ return fmt .Sprintf ("%s [%s] %s" , timestamp , level , message )
34
+ }
35
+
36
+ func (l * Logger ) Log (format string , args ... interface {}) {
37
+ msg := l .formatMessage ("LOG" , format , args ... )
38
+ l .logger .Printf ("%s" , msg )
39
+ }
40
+
41
+ func (l * Logger ) Success (format string , args ... interface {}) {
42
+ msg := l .formatMessage ("SUCCESS" , format , args ... )
43
+ l .logger .Printf ("%s%s%s" , colorGreen , msg , colorReset )
44
+ }
45
+
46
+ func (l * Logger ) Warn (format string , args ... interface {}) {
47
+ msg := l .formatMessage ("WARNING" , format , args ... )
48
+ l .logger .Printf ("%s%s%s" , colorYellow , msg , colorReset )
49
+ }
50
+
51
+ func (l * Logger ) Error (format string , args ... interface {}) {
52
+ msg := l .formatMessage ("ERROR" , format , args ... )
53
+ l .logger .Printf ("%s%s%s" , colorRed , msg , colorReset )
54
+ }
55
+
56
+ func (l * Logger ) Info (format string , args ... interface {}) {
57
+ msg := l .formatMessage ("INFO" , format , args ... )
58
+ l .logger .Printf ("%s%s%s" , colorBlue , msg , colorReset )
59
+ }
60
+
61
+ func (l * Logger ) Debug (format string , args ... interface {}) {
62
+ msg := l .formatMessage ("DEBUG" , format , args ... )
63
+ l .logger .Printf ("%s%s%s" , colorCyan , msg , colorReset )
64
+ }
65
+
66
+ func (l * Logger ) Fatal (format string , args ... interface {}) {
67
+ msg := l .formatMessage ("FATAL" , format , args ... )
68
+ l .logger .Fatalf ("%s%s%s" , colorPurple , msg , colorReset )
69
+ }
0 commit comments