Monologでログ出力の改行を有効にする

Tetsuro Aoki 372views 更新:2015年8月4日

例えば以下のようにメッセージの次の行にエラーの詳細をログ出力したかったとします。

[2015-08-04 11:24:11] Failed to connect to database.
SQLSTATE[28000] [1045] Access denied for user 'uesr'@'localhost' (using password: YES)

以下のようにMonologのaddErrorで改行コードを突っ込んでも、期待通りの出力にはなってくれません。

$log->addError("Failed to connect to database.\n".$e->getMessage());

これはデフォルトで使用しているLineFormatterが改行を許さない仕様になっているためです。
以下のように改行を有効にしたLineFormatterのインスタンスを生成してStreamHandlerのインスタンスにセットしてあげれば改行が効くようになります。

$formatter = new LineFormatter(null, null, true); //第3引数で改行を有効にしています

$stream = new StreamHandler(__DIR__.'/app.log', Logger::DEBUG);
$stream->setFormatter($formatter);
$log = new Logger('security');
$log->pushHandler($stream);

ログイン / 新規登録してコメントする

このソースコードをストックして後で利用したり、作業に利用したソースコードをまとめることができます。

こちらもお役に立つかもしれません