Graylog: Winston GELFパッケージを使ってNode.jsログをGraylogへ送信する

このドキュメントはNode.jsでの利用方法ガイドの一部です。完全なガイドはこちらからご覧いただけます:Node.jsからGraylogへログを送信する方法

👋 Stackhero ドキュメントへようこそ

Stackhero は、スピードとシンプルさを追求したフルマネージドの Graylog cloud ソリューションを提供しています。主な特長は以下の通りです:

  • サービスに含まれる、無制限かつ専用の SMTP メールサーバーをご利用いただけます。
  • アップデートはワンクリックで簡単に適用でき、手動での作業は不要です。
  • HTTPS で保護された カスタムドメイン名(例:https://logs.your-company.com)を利用でき、チームに安全かつ直接的なアクセスを提供します。
  • プライベートかつ専用インフラストラクチャ上で、高いパフォーマンスセキュリティを実現。他のユーザーとのリソース共有やノイズの心配はありません。

ツールではなくデータに集中できます:Stackhero の Graylog cloud hosting ソリューションは、数分でご利用を開始いただけます。

warning プロジェクトにすでにWinstonが含まれていない限り、graylog2パッケージの利用を推奨します。Winstonを利用している場合は、winston-gelfに置き換えてください。

Winston GELFパッケージをインストールするには、以下を実行します。

npm install winston-gelf

Winstonがまだプロジェクトに含まれていない場合は、以下で追加できます。

npm install winston

基本的なセットアップ例は以下の通りです。

const winston = require('winston');
const winstonGelf = require('winston-gelf');
const process = require('process');

const logger = winston.createLogger({
  transports: [
    new winston.transports.Console(),
    new winstonGelf({
      // gelfProの全オプションはこちらを参照: https://www.npmjs.com/package/gelf-pro
      gelfPro: {
        fields: {
          env: process.env.NODE_ENV || 'development'
        },
        adapterName: 'udp',
        adapterOptions: {
          host: '<XXXXXX>.stackhero-network.com', // ご自身のGraylogドメインに置き換えてください
          port: 12201,
        }
      }
    })
  ]
});

// 情報ログの例
logger.info('This is a log information');

// エラーログの例
try {
  throw Error('This is an example error');
}
catch(error) {
  logger.warn({ message: 'Error triggered', error });
}

Graylogのインプット設定を忘れずに行ってください(詳細は下記参照)。