Skip to content

Commit 6b10742

Browse files
committed
feat: added SubLogger interface and default implementation
1 parent 3038a94 commit 6b10742

File tree

1 file changed

+72
-42
lines changed

1 file changed

+72
-42
lines changed

logger.go

Lines changed: 72 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -41,40 +41,50 @@ type (
4141

4242
// LogMessage struct
4343
LogMessage struct {
44-
title string
45-
details []string
46-
status gologgerstatus.Status
44+
subheader string
45+
details []string
46+
status gologgerstatus.Status
4747
}
4848

4949
// LogError struct
5050
LogError struct {
51-
title string
52-
errors []error
51+
subheader string
52+
errors []error
5353
}
5454

5555
// Logger is an interface for logging messages
5656
Logger interface {
57+
LogMessage(header string, logMessage *LogMessage)
58+
LogError(header string, logError *LogError)
59+
}
60+
61+
// SubLogger is an interface for logging messages with a name
62+
SubLogger interface {
5763
LogMessage(logMessage *LogMessage)
5864
LogError(logError *LogError)
5965
}
6066

6167
// DefaultLogger is a logger that logs messages
62-
DefaultLogger struct {
68+
DefaultLogger struct{}
69+
70+
// DefaultSubLogger is a logger that logs messages with a name
71+
DefaultSubLogger struct {
6372
name string
6473
formattedName string
74+
logger Logger
6575
}
6676
)
6777

6878
// NewLogMessage creates a new log message
6979
func NewLogMessage(
70-
title string,
80+
subheader string,
7181
status gologgerstatus.Status,
7282
details ...string,
7383
) *LogMessage {
7484
return &LogMessage{
75-
title: title,
76-
status: status,
77-
details: details,
85+
subheader: subheader,
86+
status: status,
87+
details: details,
7888
}
7989
}
8090

@@ -98,9 +108,9 @@ func (l *LogMessage) String() string {
98108
)
99109
}
100110

101-
// Add title
102-
if l.title != "" {
103-
formattedLog = append(formattedLog, l.title)
111+
// Add subheader
112+
if l.subheader != "" {
113+
formattedLog = append(formattedLog, l.subheader)
104114
}
105115

106116
// Add formatted details
@@ -113,12 +123,12 @@ func (l *LogMessage) String() string {
113123

114124
// NewLogError creates a new log error
115125
func NewLogError(
116-
title string,
126+
subheader string,
117127
errors ...error,
118128
) *LogError {
119129
return &LogError{
120-
title: title,
121-
errors: errors,
130+
subheader: subheader,
131+
errors: errors,
122132
}
123133
}
124134

@@ -140,9 +150,9 @@ func (l *LogError) String() string {
140150
),
141151
)
142152

143-
// Add message
144-
if l.title != "" {
145-
formattedLog = append(formattedLog, l.title)
153+
// Add subheader
154+
if l.subheader != "" {
155+
formattedLog = append(formattedLog, l.subheader)
146156
}
147157

148158
// Add formatted errors
@@ -154,47 +164,67 @@ func (l *LogError) String() string {
154164
}
155165

156166
// NewDefaultLogger creates a new logger
157-
func NewDefaultLogger(name string) *DefaultLogger {
158-
return &DefaultLogger{
159-
name: name,
160-
formattedName: gologgerstrings.AddBrackets(NameSeparator, name),
161-
}
167+
func NewDefaultLogger() *DefaultLogger {
168+
return &DefaultLogger{}
162169
}
163170

164171
// FormatLogMessage formats a log message
165-
func (d *DefaultLogger) FormatLogMessage(logMessage *LogMessage) string {
166-
// Check if the log message is nil
167-
if logMessage == nil {
168-
return d.formattedName
169-
}
170-
172+
func (d *DefaultLogger) FormatLogMessage(
173+
header string,
174+
logMessage *LogMessage,
175+
) string {
171176
return strings.Join(
172-
[]string{d.formattedName, logMessage.String()},
177+
[]string{header, logMessage.String()},
173178
string(MessageSeparator),
174179
)
175180
}
176181

177182
// LogMessage logs a message
178-
func (d *DefaultLogger) LogMessage(logMessage *LogMessage) {
179-
log.Println(d.FormatLogMessage(logMessage))
183+
func (d *DefaultLogger) LogMessage(header string, logMessage *LogMessage) {
184+
log.Println(d.FormatLogMessage(header, logMessage))
180185
}
181186

182187
// FormatLogError formats a log error
183-
func (d *DefaultLogger) FormatLogError(logError *LogError) string {
184-
// Check if the log error is nil
185-
if logError == nil {
186-
return d.formattedName
187-
}
188-
188+
func (d *DefaultLogger) FormatLogError(
189+
header string,
190+
logError *LogError,
191+
) string {
189192
return strings.Join(
190193
[]string{
191-
d.formattedName,
194+
header,
192195
logError.String(),
193196
}, string(MessageSeparator),
194197
)
195198
}
196199

197200
// LogError logs an error
198-
func (d *DefaultLogger) LogError(logError *LogError) {
199-
log.Println(d.FormatLogError(logError))
201+
func (d *DefaultLogger) LogError(header string, logError *LogError) {
202+
log.Println(d.FormatLogError(header, logError))
203+
}
204+
205+
// NewDefaultSubLogger creates a new sub logger
206+
func NewDefaultSubLogger(name string, logger Logger) (
207+
*DefaultSubLogger,
208+
error,
209+
) {
210+
// Check if the logger is nil
211+
if logger == nil {
212+
return nil, ErrNilLogger
213+
}
214+
215+
return &DefaultSubLogger{
216+
name: name,
217+
formattedName: gologgerstrings.AddBrackets(NameSeparator, name),
218+
logger: logger,
219+
}, nil
220+
}
221+
222+
// LogMessage logs a message
223+
func (d *DefaultSubLogger) LogMessage(logMessage *LogMessage) {
224+
d.logger.LogMessage(d.formattedName, logMessage)
225+
}
226+
227+
// LogError logs an error
228+
func (d *DefaultSubLogger) LogError(logError *LogError) {
229+
d.logger.LogError(d.formattedName, logError)
200230
}

0 commit comments

Comments
 (0)