多少はNew Relicを分かるようになりたいと思ってNew Relic実践入門 第2版 オブザーバビリティの基礎と実現という本を買った。New Relicでどんなことができるかの概要を掴むのに良いと思う。
読んでいて気になったのはLogs in Contextだ。Distributed TracingやErrors Inboxから簡単にログへ辿りつけるのは嬉しい。この嬉しい機能をAPM Agentが提供されていない言語で書かれたアプリケーションから使いたい。残念ながら流石にそのような場合への言及はなかった。しかし仕組みを読む限りAPM Agentなしでも形式さえ合っていればLogs in Contextを利用可能にも思える。
Logs in Contextの仕組みをもう少し詳細に見てみましょう。まず、アプリケーションがログの出力を行う際に、New RelicのAPM Agentによってメタデータ(
span.id、trace.idなど)を装飾し、ログフォーマッターによってNew Relicに取り込める形式のログを出力します。これによって、ErrorやTraceとひも付いたログがNew Relicに取り込まれます9.4.1 Logs in Contextの仕組み
何か先例がないか探してみたところLogs In Context With Log4j2にNew Relic structured logging conventionsというリンクを見つけた。これは期待できそうだ。
This document describes the serialized format for New Relic Logs-in-Context. The intention of this document is to provide guidance to anyone writing a log extension for a language or framework not supported by the existing Logs-in-Context libraries.
https://github.com/newrelic/newrelic-exporter-specs/blob/master/logging/README.md
file.name や line.number の記載もあるので、CodeStreamとも連携できるのだろうか。もしそうであるならば嬉しい。