Судя по исходному коду на
вы должны быть в состоянии использовать несколько обработчиков файлов одновременно. Попробуйте что-то вдоль линий этого:
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 Logger, адаптируя Analog хендлер. Чтобы сделать это, необходимо сначала создать интерфейс, определяющий, как вы хотите использовать Лесоруб в приложении:
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);
}
}
Наконец, написать Композитный Logger:
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);
Предупреждение затем будет записано всем зарегистрированным регистраторам.
Whoo! Спасибо за этот подробный ответ, я поближе посмотрю на это. Но то, что я понимаю, быстро взглянув, то есть не позволяет писать mulitple logfiles eiter .. o) Я хотел написать разные файлы журналов с различным контентом. Я хотел бы иметь файл «error.log» и «audit.log», записывая разные вещи. Мне кажется, я не могу сделать это с помощью статической реализации Analog. –
@RobertG. Я боюсь, я не знаю Analog достаточно хорошо, чтобы сказать. – Gordon