【问题标题】:PHP Monolog as Logger Only Prints Info LevelPHP Monolog 作为 Logger 仅打印信息级别
【发布时间】:2018-07-02 17:09:48
【问题描述】:

我有一个类,我通过 composer 自动加载到我的所有其他类:

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

class LogStreamer
{

    protected static $instance;

    public static function getLogger()
    {
        if(! self::$instance){
            self::configureInstance();
        }

        return self::$instance;
    }

    private static function configureInstance() {
        $logger = new Logger('Q');
        $logger->pushHandler(new StreamHandler('/var/log/php/php.log'), Logger::INFO);
        self::$instance = $logger;
    }

    public static function info($message, array $context = []){
        self::getLogger()->addInfo($message, $context);
    }
    public static function debug($message, array $context = []){
        self::getLogger()->addDebug($message, $context);
    }

当我在其他类中使用它时,它看起来像这样:

public function getOptions() {
    LogStreamer::debug("Debug happened in log streamer");
    LogStreamer::info("Info happened in log streamer");

它确实会打印出一些东西:

[2018-07-02 09:56:34] Q.DEBUG: Debug happened in log streamer [] []
[2018-07-02 09:56:34] Q.INFO: Info happened in log streamer [] []

当然,在这种情况下我只需要信息日志级别。但是,它会同时打印两者。我该如何解决这个问题?

【问题讨论】:

    标签: php monolog


    【解决方案1】:

    日志级别是StreamHandler构造函数的参数,而不是函数pushHandler()

    来自:

    $logger->pushHandler(new StreamHandler('/var/log/php/php.log'), Logger::INFO);
    

    到:

    $logger->pushHandler(new StreamHandler('/var/log/php/php.log', Logger::INFO));
    

    应该做你想做的事

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-17
      • 1970-01-01
      • 1970-01-01
      • 2018-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-12
      相关资源
      最近更新 更多