5

symfony2のモノローグでカスタムレベルを定義する方法はありますか?

私はこれをします

$logger->err('An error occurred');

次に、データベースにこれを追加しました。

チャネルはappであり、レベルは500

これを行う方法はありますか

$logger->log("message",(channel),(level)
$logger->log("Object with is 212 deleted",'DELETE',NORMAL);

レポートと表示のためにデータベースに別々のものを含めることができるように

4

2 に答える 2

13

MonologBu​​ndle のバージョン 2.4 以降 (MonologBu​​ndle のリリース サイクルは symfony と同期されていないことに注意してください) では、サービスを定義することなく、構成を介して非常に簡単に新しいチャネルを定義できるようになりました。

monolog:
    channels: ["my_channel"]

コントローラーの新しいチャネル用に自動作成されたロガーを取得するだけです。

$logger = $this->get('monolog.logger.my_channel');
$logger->info('somelogcontent');

メッセージ レベルは、適切なメソッドを使用して定義されます。を調べて、LoggerInterfaceすべてのロギング メソッドを確認してください (これらは実際には monolog によって実装されています)。ここで言及するいくつかのレベル:

$logger->info('Info message for interesting things');
$logger->warning('Some application warnings, but the application works');
$logger->error('Error which can influence the application flow/output');

古い質問は知っていますが、 からのこの新機能MonologBundle ~2.4について言及する必要があります。

于 2013-11-06T19:12:32.727 に答える
6

Monolog のドキュメントによると、チャネルはロガーに関連付けられており、基本的にロガーの名前はあなたのチャネルです。つまり、特定のロガーで別のチャネルを指定することはできませんが、別のチャネルで新しいロガーを作成することはできます。

レベルは単なる数値と定数なので、独自に作成できます。適切なフォーマッタを使用すると、カスタム レベルに対応する文字列を取得できます。

于 2012-08-17T12:52:34.620 に答える