0

私は次のようにロギングメカニズムを使用しようとしています:

log_handler:
    class: %monolog.handler.stream.class%
    arguments: [ %kernel.logs_dir%/%kernel.environment%.yourFileName.log ]


logger:
class: %monolog.logger.class%
    arguments: [ nameOfLoggingChannel ]
    calls: [ [pushHandler, [@log_handler]] ]

しかし、私のアプリは「nameOfLoggingChannel」の解析を無駄にしています。それは何ですか?誰かがガイダンスを提供できますか?

4

1 に答える 1

2

それはただの名前です。そのロガーによってログに記録されたメッセージに含まれます。ドキュメントからの引用:

チャネルは、レコードがアプリケーションのどの部分に関連しているかを識別する優れた方法です。これは大規模なアプリケーションで役立ちます (Symfony2 の MonologBu​​ndle で活用されています)。たとえば、ログ ファイルを簡単に grep して、このタイプまたはそのタイプのログ レコードをフィルタリングできます。

同じハンドラーで異なるロガーを使用すると、同じハンドラーを保持することで (たとえば、単一のログ ファイルを使用するために) レコードを発行したロガーを (チャネル名で) 識別できます。

<?php

use Monolog\Logger;
use Monolog\Handler\StreamHandler;
use Monolog\Handler\FirePHPHandler;

// Create some handlers
$stream = new StreamHandler(__DIR__.'/my_app.log', Logger::DEBUG);
$firephp = new FirePHPHandler();

// Create the main logger of the app
$logger = new Logger('my_logger');
$logger->pushHandler($stream);
$logger->pushHandler($firephp);

// Create a logger for the security-related stuff with a different channel
$securityLogger = new Logger('security');
$securityLogger->pushHandler($stream);
$securityLogger->pushHandler($firephp);
于 2012-08-03T17:31:38.220 に答える