答え
公式クライアントの「fluent-logger」を使う。
fluent/fluent-logger-node: A structured logger for Fluentd (Node.js)
やり方
デバッグしやすいように以下のfluendの設定をしたサーバーを用意する。
<source> @type forward port 24224 </source> <match *.*> @type stdout </match>
受け取ったデータを全部標準出力に出力するだけのかんたんな設定
そしてnodejsを用意
yarn add fluent-logger
で以下
const logger = require('fluent-logger') logger.configure('mylog', { host: '127.0.0.1', port: 24224, timeout: 3.0, enableReconnect: true, reconnectInterval: 600000 // 10 minutes }) logger.emit('info', {from: 'userA', to: 'userB'}) setTimeout(()=> logger.end(), 1000);
すると以下のように表示されるはず
fluentd_1 | 2020-07-30 02:37:09.000000000 +0900 mylog.info: {"from":"userA","to":"userB"}
- ここではmylogがタグのprefixでinfoはsuffixなのでmylog.infoになる
注意点
明示的に logger.end()
をしないと終了されないのが注意。
ただ、普通に書いてしまうと送信前に終わってしまうので setTimeout()
をつけて遅延させて上げる必要がある。