我正在寻找一个体面的,易于使用的日志助手类集/框架。可以使用模拟库来创建多个日志文件吗?
我发现Analog,并发现它正是我所需要的,尽管它似乎只能用于一次一个日志文件。
我错了吗?!
你知道一些类似的(大小/功能)项目,允许写入多个日志吗?模拟分支可能?我已经看过log4php,KLogger和Monolog了。
我正在寻找一个体面的,易于使用的日志助手类集/框架。可以使用模拟库来创建多个日志文件吗?
我发现Analog,并发现它正是我所需要的,尽管它似乎只能用于一次一个日志文件。
我错了吗?!
你知道一些类似的(大小/功能)项目,允许写入多个日志吗?模拟分支可能?我已经看过log4php,KLogger和Monolog了。
在
从源代码来看,你应该能够同时使用多个文件句柄。尝试是沿着此线:
Analog::handler(Analog\Handler\Multi::init(array(
Analog::ERROR => Analog\Handler\File::init('/path/to/logs/errors.log'),
Analog::WARNING => Analog\Handler\File::init('/path/to/logs/warnings.log'),
Analog::DEBUG => Analog\Handler\File::init('/path/to/logs/debug.log')
)));
如果你不能使它与Analog\Handler\Multi
工作,你仍然可以编写自己的Composite记录仪,适应模拟文件处理程序。因此,它满足接口
interface Logger
{
const ERROR = 'error';
const WARNING = 'warning';
const DEBUG = 'debug';
public function log($message, $level);
}
然后创建模拟适配器:要做到这一点,首先要创建定义如何你想在你的应用程序中使用记录仪的接口
class AnalogAdapter implements Logger
{
private $adaptee;
public function __construct(Analog $analog)
{
$this->adaptee = $analog;
}
public function log($message, $level)
{
$adaptee = $this->adaptee;
$adaptee::log($message, $adaptee::$level);
}
}
最后,写综合记录仪:
class CompositeLogger implements Logger
{
private $loggers = array;
public function registerLogger(Logger $logger)
{
$this->loggers[] = $logger;
}
public function log($message, $level)
{
foreach ($this->loggers as $logger)
{
$logger->log($message, $level);
}
}
}
然后,创建模拟文件处理程序和与复合注册它们:
$logger = new CompositeLogger;
$logger->registerLogger(
new AnalogAdapter(
Analog\Handler\File::init('/path/to/logs/errors.log')
)
);
// … add more Loggers in the same way
$logger->log('This is a warning', Logger::WARNING);
该警告将被写入所有注册的记录器。
是的,它确实很好。您可以为不同的日志类型创建不同的日志功能。
EG。这将发送错误。但是要将警告写入日志。
Analog::handler(Analog\Handler\Multi::init(array(
Analog::ERROR => Analog\Handler\Buffer::init (
Analog\Handler\Mail::init (
'[email protected]',
'Log messages',
'[email protected]'
)
)
,Analog::WARNING => Analog\Handler\File::init(__DIR__.'/log/warning.log')
//Analog::DEBUG => Analog\Handler\File::init('/path/to/logs/debug.log')
)));
Wh!感谢这个详细的答案,我会仔细看看。但是,通过快速浏览我意识到,这是不允许写多个日志文件。o)我打算编写不同的日志文件,具有不同的内容。我想要一个“error.log”和一个“audit.log”文件,记录不同的事情。在我看来,我无法用Analog的静态实现来做到这一点。 – 2013-04-05 10:44:15
@RobertG。我害怕,我不太清楚Analog能否说出来。 – Gordon 2013-04-05 11:30:45