簡體   English   中英

PHP:如何使用 monolog 登錄到控制台 (php://out)?

[英]PHP: How to use monolog to log to console (php://out)?

我剛剛切換到 monolog 並想將我的消息記錄到 PHP 控制台而不是文件。 對於某些人來說,這似乎很明顯,但是我花了一些時間才弄清楚如何做到這一點,而且我在 SO 上找不到類似的問題/答案。

Monolog 的 Github 自述文件中的示例僅展示了如何使用文件:

<?php

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

// create a log channel
$log = new Logger('name');
$log->pushHandler(new StreamHandler('path/to/your.log', Logger::WARNING)); // <<< uses a file

// add records to the log
$log->addWarning('Foo');
$log->addError('Bar');

但它沒有說明如何將消息記錄到控制台。 在 Google 上搜索后,我登陸了 Symfony 的幫助頁面或尋找登錄瀏覽器控制台方法的人們的問題。

解決方法相當簡單。 由於示例顯示了StreamHandler因此可以傳入流(而不是文件的路徑)。 默認情況下,在 PHP 中回顯的所有內容都寫入php://stdout / php://output ,因此我們可以簡單地使用其中之一作為StreamHandler流:

<?php

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

// create a log channel
$log = new Logger('name');
$log->pushHandler(new StreamHandler('php://stdout', Logger::WARNING)); // <<< uses a stream

// add records to the log
$log->warning('Foo');
$log->error('Bar');

希望這可以節省一些時間:)

如果您想同時調整默認消息格式,請提供一些額外的詳細信息:

use Monolog\Logger;
use Monolog\Formatter\LineFormatter;
use Monolog\Handler\StreamHandler;

$output = "[%datetime%] %channel%.%level_name%: %message%\n";
$formatter = new LineFormatter($output);

$streamHandler = new StreamHandler('php://stdout', Logger::DEBUG);
$streamHandler->setFormatter($formatter);

$logger = new Logger('LoggerName');
$logger->pushHandler($streamHandler);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM