Skip to content

Commit

Permalink
feat(log): add caller to logs
Browse files Browse the repository at this point in the history
  • Loading branch information
rot1024 committed Jan 28, 2025
1 parent 9ca6b90 commit 83ed95f
Show file tree
Hide file tree
Showing 2 changed files with 66 additions and 4 deletions.
43 changes: 42 additions & 1 deletion log/logger.go
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,10 @@ func newLogger(w io.Writer, atom zap.AtomicLevel, name string) *zap.SugaredLogge
zapcore.Lock(zapcore.AddSync(w)),
atom,
),
).Sugar().Named(name)
).Sugar().Named(name).WithOptions(
zap.AddCaller(),
zap.AddCallerSkip(1),
)
}

func encoder() zapcore.Encoder {
Expand All @@ -73,6 +76,44 @@ func encoder() zapcore.Encoder {
}
}

func (l *Logger) AppendPrefixMessage(prefix string) *Logger {
return l.AppendDynamicPrefix(func() Format {
return Format{Format: prefix}
})
}

func (l *Logger) AppendSuffixMessage(suffix string) *Logger {
return l.AppendDynamicSuffix(func() Format {
return Format{Format: suffix}
})
}

func (l *Logger) AppendDynamicPrefix(prefix func() Format) *Logger {
if l.dynPrefix == nil {
return l.SetDynamicPrefix(prefix)
}

return l.SetDynamicPrefix(func() Format {
if l.dynPrefix == nil {
return prefix()
}
return l.dynPrefix().Append(prefix())
})
}

func (l *Logger) AppendDynamicSuffix(suffix func() Format) *Logger {
if l.dynSuffix == nil {
return l.SetDynamicSuffix(suffix)
}

return l.SetDynamicSuffix(func() Format {
if l.dynSuffix == nil {
return suffix()
}
return l.dynSuffix().Append(suffix())
})
}

func (l *Logger) SetDynamicPrefix(prefix func() Format) *Logger {
return &Logger{
logger: l.logger,
Expand Down
27 changes: 24 additions & 3 deletions log/logger_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -57,16 +57,37 @@ func TestLogger_DynamicPrefixSuffix(t *testing.T) {
}).SetDynamicSuffix(func() Format {
return Format{
Format: " <%s>",
Args: []any{"prefix"},
Args: []any{"suffix"},
}
})
l.Infof("hoge %s", "fuga")
l.Info("fuga", 1)

scanner := bufio.NewScanner(w)
assert.True(t, scanner.Scan())
assert.Contains(t, scanner.Text(), "[test] hoge fuga <prefix>")
assert.Contains(t, scanner.Text(), "[test] hoge fuga <suffix>")
assert.True(t, scanner.Scan())
assert.Contains(t, scanner.Text(), "[test] [fuga 1] <suffix>")
assert.False(t, scanner.Scan())
}

func TestLogger_AppendDynamicPrefixS(t *testing.T) {
w := &bytes.Buffer{}
l := NewWithOutput(w).AppendDynamicPrefix(func() Format {
return Format{
Format: "[%s] ",
Args: []any{"prefix"},
}
}).AppendPrefixMessage("<prefix2> ").AppendDynamicSuffix(func() Format {
return Format{
Format: " [%s]",
Args: []any{"suffix"},
}
}).AppendSuffixMessage(" <suffix2>")
l.Infof("hoge %s", "fuga")

scanner := bufio.NewScanner(w)
assert.True(t, scanner.Scan())
assert.Contains(t, scanner.Text(), "[test] [fuga 1] <prefix>")
assert.Contains(t, scanner.Text(), "[prefix] <prefix2> hoge fuga [suffix] <suffix2>")
assert.False(t, scanner.Scan())
}

0 comments on commit 83ed95f

Please sign in to comment.