メインコンテンツまでスキップ

ロギング

Zeltは設定可能なログレベルを持つ組み込みLoggerモジュールを提供します。

基本的な使い方

サービスやコントローラーにLoggerを注入:

import { Injectable, inject } from '@zeltjs/core';
import { Logger } from '@zeltjs/core/modules/logger';

@Injectable()
export class OrderService {
constructor(private logger = inject(Logger)) {}

processOrder(orderId: string) {
this.logger.info(`Processing order: ${orderId}`);

try {
// ... 注文を処理
this.logger.debug('Order validation passed');
} catch (error) {
this.logger.error(`Failed to process order: ${orderId}`);
throw error;
}
}
}

ログレベル

Loggerは重要度順に4つのログレベルをサポート:

レベルメソッド説明
debuglogger.debug()詳細なデバッグ情報
infologger.info()一般的な情報メッセージ
warnlogger.warn()警告メッセージ
errorlogger.error()エラーメッセージ

メッセージは設定されたレベル以上の場合のみ出力されます。例えば、level: 'info'ではdebug()メッセージは抑制されます。

設定

LoggerConfigを使用してLoggerを設定:

import { Config } from '@zeltjs/core';
import { LoggerConfig } from '@zeltjs/core/modules/logger';

@Config
export class AppLoggerConfig extends LoggerConfig {
override get level(): 'debug' | 'info' | 'warn' | 'error' {
return process.env.LOG_LEVEL as 'debug' | 'info' | 'warn' | 'error' ?? 'info';
}
}

アプリ作成時に設定を登録:

import { createHttpApp } from '@zeltjs/core';
import { AppLoggerConfig } from './logger.config';
import { AppController } from './app.controller';

const app = createHttpApp({
controllers: [AppController],
configs: [AppLoggerConfig],
});

デフォルト動作

カスタム設定なしの場合、Loggerはデフォルトレベルとして'info'を使用します。つまりdebug()メッセージは抑制され、info()warn()error()メッセージは出力されます。