PHP Monolog作为记录器仅打印信息级别

时间:2018-07-02 17:09:49

标签: php monolog

我有一个可以通过作曲器自动加载到其他所有类的类:

#include <stdio.h>

int main()
{
    int t,n,k,i,j,a[100000],b[100000][20],ch;
    scanf("%d",&t);
    while(t--)
    {
        scanf("%d%d",&n,&k);
        for(i=0;i<k;i++)
        a[i]=0;
        ch=0;
        for(i=0;i<n;i++)
        {
            scanf("%d",&b[i][0]);
            for(j=1;j<=b[i][0];j++)
            {
                scanf("%d",&b[i][j]);
                a[b[i][j]-1]++;
            }
        }
        for(i=0;i<k;i++)
        if(a[i]==0)
        {
            ch=1;break;//impossible
        }
        if(ch==1)
        printf("sad\n");
        else//possible
        {
            for(i=0;i<n;i++)
            {
                ch=0;
                for(j=1;j<=b[i][0];j++)
              {
                if(a[b[i][j]-1]==1)//its contri matters
                {
                    ch=1;break;
                }
              }
            if(ch==0)//its contri doesn't matter
            {
                printf("some\n");
                break;
            }
            }
            if(ch==1)
            printf("all\n");
        }

    }
    return 0;
}

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

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");

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

1 个答案:

答案 0 :(得分:2)

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

来自:

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

收件人:

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

应该做你想做的