🤖

[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
  • こういうのがあると各ライブラリ等で情報の追加とかがしやすくなりそうですねー
GitHubで編集を提案

Discussion