Rob*_* G. 4 php logging logfiles php-analog-package
我正在寻找一个体面的、易于使用的日志记录助手类集/框架。
我发现了Analog并发现它正是我所需要的,尽管事实上它似乎一次只能用于一个日志文件。
我错了吗 ?!
您是否知道一些允许写入多个日志的类似(大小/功能)项目?也许是模拟分支?我已经看过 log4php、KLogger 和 Monolog。
从源码来看
\n\n您应该能够同时使用多个文件处理程序。尝试一些类似的事情:
\n\nAnalog::handler(Analog\\Handler\\Multi::init(array(\n Analog::ERROR => Analog\\Handler\\File::init(\'/path/to/logs/errors.log\'),\n Analog::WARNING => Analog\\Handler\\File::init(\'/path/to/logs/warnings.log\'),\n Analog::DEBUG => Analog\\Handler\\File::init(\'/path/to/logs/debug.log\')\n)));\nRun Code Online (Sandbox Code Playgroud)\n\n如果您无法使其与 一起使用Analog\\Handler\\Multi,您仍然可以编写自己的复合记录器,以适应模拟文件处理程序。为此,首先创建一个接口,定义您希望如何在应用程序中使用记录器:
interface Logger\n{\n const ERROR = \'error\';\n const WARNING = \'warning\';\n const DEBUG = \'debug\';\n\n public function log($message, $level);\n}\nRun Code Online (Sandbox Code Playgroud)\n\n然后创建模拟适配器,使其满足接口:
\n\nclass AnalogAdapter implements Logger\n{\n private $adaptee;\n\n public function __construct(Analog $analog)\n {\n $this->adaptee = $analog;\n }\n\n public function log($message, $level)\n {\n $adaptee = $this->adaptee;\n $adaptee::log($message, $adaptee::$level);\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n\n最后,编写复合记录器:
\n\nclass CompositeLogger implements Logger\n{\n private $loggers = array;\n\n public function registerLogger(Logger $logger)\n {\n $this->loggers[] = $logger;\n }\n\n public function log($message, $level)\n {\n foreach ($this->loggers as $logger)\n {\n $logger->log($message, $level);\n }\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n\n然后创建模拟文件处理程序并将它们注册到 Composite:
\n\n$logger = new CompositeLogger;\n$logger->registerLogger(\n new AnalogAdapter(\n Analog\\Handler\\File::init(\'/path/to/logs/errors.log\')\n )\n);\n\n// \xe2\x80\xa6 add more Loggers in the same way\n\n$logger->log(\'This is a warning\', Logger::WARNING);\nRun Code Online (Sandbox Code Playgroud)\n\n然后警告将写入所有已注册的记录器。
\n