单例中的Monolog实现

时间:2018-11-28 19:34:41

标签: singleton monolog

我正在尝试在包含启动页面,启动调用的Configuration类和许多MVC类型类的应用程序中使用独占。试图找出一种使日志记录易于访问的方法。 (我读过this,这很有帮助,并尝试了(到目前为止,还是失败)了解DI。但是我最终还是这样做了,这有点单身,并且似乎可以用。有人可以指出缺陷?

 class MxLogger
    {
        private static  $logger = null;  

         protected function __construct (){
            $name='f3.log';
            $logger = new Logger('f3');
            $logger->pushHandler(new StreamHandler(LOGPATH . "/$name", Logger::DEBUG));
            $logger->pushProcessor(new IntrospectionProcessor(LOGGER::DEBUG,['Configuration'],0));
            self::$logger = $logger;
        }

        public static function getLogger(){
            if (self::$logger === null ) {
                new MxLogger();
            }
            return self::$logger;
        }

    }

,然后在其他课程中:

MxLogger::getlogger()->info("Testing on line 27");

1 个答案:

答案 0 :(得分:0)

您可以包装一些记录器方法,使它们更容易统一访问,如下所示:

Animator States

,然后将getLogger的访问修饰符更改为protected。