🤖
[Feature #21619] logger を拡張できる API を追加する提案
[Feature #21619] logger: Context API
-
loggerをより扱いやすく拡張できるようにするための API を新たに追加したいという内容のチケット - 具体的に以下のような形で
contextを設定できるようにし、必要に応じてログを拡張できるようにする提案
logger = Logger.new(STDOUT)
logger.info("foo") #=> I, [2025-08-13T15:00:03.830782 #5374] INFO -- : foo
logger.info { "foo" } #=> I, [2025-08-13T15:00:03.830782 #5374] INFO -- : foo
# メッセージに context を付与し、その内容がログに追加される
logger.info("foo", context: {user_id: 1}) #=> I, [user_id=1] [2025-08-13T15:00:03.830782 #5374] INFO -- : foo
logger.info(context: { user_id: 1 }) { "foo" } #=> I, [user_id=1] [2025-08-13T15:00:03.830782 #5374] INFO -- : foo
# or
logger.info("foo", context: ["alwaysblue"]) #=> I, [alwaysblue] [2025-08-13T15:00:03.830782 #5374] INFO -- : foo.
# こんな感じでブロックに対して context も付与できる
logger.with_context(a: 1) do
logger.info("foo") #=> I, [a=1] [2025-08-13T15:00:03.830782 #5374] INFO -- : foo
end
logger.with_context(a: 1) do
logger.with_context(b: 2) do
# ネストしている場合はそれぞれの context が付与される
logger.info("foo") #=> I, [a=1] [b=2] [2025-08-13T15:00:03.830782 #5374] INFO -- : foo
end
end
- こういうのがあると各ライブラリ等で情報の追加とかがしやすくなりそうですねー
Discussion