多少はNew Relicを分かるようになりたいと思ってNew Relic実践入門 第2版 オブザーバビリティの基礎と実現という本を買った。New Relicでどんなことができるかの概要を掴むのに良いと思う。

読んでいて気になったのはLogs in Contextだ。Distributed TracingErrors Inboxから簡単にログへ辿りつけるのは嬉しい。この嬉しい機能をAPM Agentが提供されていない言語で書かれたアプリケーションから使いたい。残念ながら流石にそのような場合への言及はなかった。しかし仕組みを読む限りAPM Agentなしでも形式さえ合っていればLogs in Contextを利用可能にも思える。

Logs in Contextの仕組みをもう少し詳細に見てみましょう。まず、アプリケーションがログの出力を行う際に、New RelicのAPM Agentによってメタデータ(span.idtrace.idなど)を装飾し、ログフォーマッターによってNew Relicに取り込める形式のログを出力します。これによって、ErrorやTraceとひも付いたログがNew Relicに取り込まれます

9.4.1 Logs in Contextの仕組み

何か先例がないか探してみたところLogs In Context With Log4j2New 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.nameline.number の記載もあるので、CodeStreamとも連携できるのだろうか。もしそうであるならば嬉しい。