Skip to content

Implement v2 interface based on slog#13

Open
dmcgowan wants to merge 1 commit intocontainerd:mainfrom
dmcgowan:v2-interface
Open

Implement v2 interface based on slog#13
dmcgowan wants to merge 1 commit intocontainerd:mainfrom
dmcgowan:v2-interface

Conversation

@dmcgowan
Copy link
Copy Markdown
Member

@dmcgowan dmcgowan commented Apr 4, 2026

Add v2 interface as a new module alongside v1. The v2 inteface is designed for maximum compatibility purely using slog.

Since v1 and v2 will both be maintained, using the subdirectory approach for the v2 interface seems the cleanest. This code will very rarely change and may become irrelevant once directly using slog API becomes more common.

Closes #2

Add v2 interface as a new module alongside v1. The v2 inteface is
designed for maximum compatibility purely using slog.

Signed-off-by: Derek McGowan <[email protected]>
Copy link
Copy Markdown
Member

@dims dims left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

Copy link
Copy Markdown
Member

@austinvazquez austinvazquez left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

CI will need some work for the new module, but that can be follow-up work.

In my opinion, the only block is the frame counting fix.

Comment thread v2/entry.go
if ctx == nil {
ctx = context.Background()
}
logger.LogAttrs(ctx, level, msg, entry.attr...)
Copy link
Copy Markdown
Member

@austinvazquez austinvazquez Apr 22, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This will be off by 1 frame count for the source. We will need to copy up some of the logging code from slog library to fix it.

Ref: https://cs.opensource.google/go/go/+/refs/tags/go1.26.2:src/log/slog/logger.go;l=271

Comment thread v2/context.go
return logger.(*Entry)
}
return &Entry{
logger: slog.Default(),
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could consider lazy evaluation of logger here. i.e. leave logger as nil.

// Log level, format, and handler configuration should be done directly
// through [log/slog] using [slog.SetDefault] before using this package.

To be fair, the package doc clear states all log configuration should be done before package use, but in this case it's not too inconsequential to defer the evaluation. All the log functions already account for nil logger.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

consider replacing logrus

3 participants