Spec-Zone.ru › Phalcon 2

Ведение журнала

Phalcon\Logger — это компонент, предназначенный для предоставления служб ведения журнала для приложений. Он обеспечивает ведение журнала в различных бэкендах с помощью различных адаптеров. Он также предлагает транзакционное ведение журнала, параметры конфигурации, различные форматы и фильтры. Вы можете использовать Phalcon\Logger для всех потребностей вашего приложения в ведении журнала, от отладки процессов до отслеживания потока приложения.

Адаптеры

Этот компонент использует адаптеры для хранения записанных сообщений. Использование адаптеров позволяет получить общий интерфейс для ведения журнала, при необходимости переключаясь на другие бэкенды. Поддерживаемые адаптеры:

Адаптер Описание API
Файл Запись в текстовый файл Phalcon\Logger\Adapter\File
Поток Запись в поток PHP Phalcon\Logger\Adapter\Stream
Syslog Запись в системный логгер Phalcon\Logger\Adapter\Syslog
Firephp Запись в FirePHP Phalcon\Logger\Adapter\FirePHP

Создание лога

Пример ниже демонстрирует, как создать лог и добавить в него сообщения:

use Phalcon\Logger\Adapter\File as FileAdapter;

$logger = new FileAdapter("app/logs/test.log");
$logger->log("This is a message");
$logger->log("This is an error", \Phalcon\Logger::ERROR);
$logger->error("This is another error");

Сгенерированный лог представлен ниже:

[Tue, 17 Apr 12 22:09:02 -0500][DEBUG] This is a message
[Tue, 17 Apr 12 22:09:02 -0500][ERROR] This is an error
[Tue, 17 Apr 12 22:09:02 -0500][ERROR] This is another error

Транзакции

Запись данных в адаптер, например, в файл (файловая система), всегда является дорогостоящей операцией с точки зрения производительности. Для решения этой проблемы вы можете воспользоваться транзакциями ведения журнала. Транзакции временно хранят данные журнала в памяти и позже записывают данные в соответствующий адаптер (файл в данном случае) в одной атомарной операции.

use Phalcon\Logger\Adapter\File as FileAdapter;

// Create the logger
$logger = new FileAdapter("app/logs/test.log");

// Start a transaction
$logger->begin();

// Add messages
$logger->alert("This is an alert");
$logger->error("This is another error");

// Commit messages to file
$logger->commit();

Ведение журнала в нескольких обработчиках

Phalcon\Logger позволяет отправлять сообщения в несколько обработчиков с помощью одного вызова:

use Phalcon\Logger,
    Phalcon\Logger\Multiple as MultipleStream,
    Phalcon\Logger\Adapter\File as FileAdapter,
    Phalcon\Logger\Adapter\Stream as StreamAdapter;

$logger = new MultipleStream();

$logger->push(new FileAdapter('test.log'));
$logger->push(new StreamAdapter('php://stdout'));

$logger->log("This is a message");
$logger->log("This is an error", Logger::ERROR);
$logger->error("This is another error");

Сообщения отправляются обработчикам в порядке их регистрации.

Форматирование сообщений

Этот компонент использует «форматеры» для форматирования сообщений перед отправкой их в бэкенд. Доступные форматеры:

Адаптер Описание API
Строка Форматирует сообщения, используя строку в одну строку Phalcon\Logger\Formatter\Line
JSON Подготавливает сообщение для кодирования с помощью JSON Phalcon\Logger\Formatter\Json
Syslog Подготавливает сообщение для отправки в syslog Phalcon\Logger\Formatter\Syslog

Форматирование строк

Форматирует сообщения, используя строку в одну строку. Стандартный формат ведения журнала:

[%date%][%type%] %message%

Вы можете изменить стандартный формат, используя setFormat(). Это позволяет вам изменить формат записываемых сообщений, определив свой собственный. Разрешенные переменные формата лога:

Переменная Описание
%message% Само сообщение, которое ожидается для ведения журнала
%date% Дата добавления сообщения
%type% Строка с типом сообщения в верхнем регистре

Пример ниже демонстрирует, как изменить формат лога:

use Phalcon\Logger\Formatter\Line as LineFormatter;

//Changing the logger format
$formatter = new LineFormatter("%date% - %message%");
$logger->setFormatter($formatter);

Реализация собственных форматеров

Для создания собственного форматера лога или расширения существующих необходимо реализовать интерфейс Phalcon\Logger\FormatterInterface.

Адаптеры

Следующие примеры демонстрируют базовое использование каждого адаптера:

Обработчик потока

Обработчик потока записывает сообщения в допустимый зарегистрированный поток в PHP. Список потоков доступен здесь:

use Phalcon\Logger\Adapter\Stream as StreamAdapter;

// Opens a stream using zlib compression
$logger = new StreamAdapter("compress.zlib://week.log.gz");

// Writes the logs to stderr
$logger = new StreamAdapter("php://stderr");

Обработчик файлов

Этот обработчик использует обычные файлы для ведения журнала любых данных. По умолчанию все файлы логгера открываются в режиме добавления, открывая файлы только для записи; позиционируя указатель файла в конце файла. Если файл не существует, попытаться создать его. Вы можете изменить этот режим, передав дополнительные параметры в конструктор:

use Phalcon\Logger\Adapter\File as FileAdapter;

// Create the file logger in 'w' mode
$logger = new FileAdapter("app/logs/test.log", array(
    'mode' => 'w'
));

Обработчик Syslog

Этот обработчик отправляет сообщения в системный логгер. Поведение syslog может отличаться в зависимости от операционной системы.

use Phalcon\Logger\Adapter\Syslog as SyslogAdapter;

// Basic Usage
$logger = new SyslogAdapter(null);

// Setting ident/mode/facility
$logger = new SyslogAdapter("ident-name", array(
    'option' => LOG_NDELAY,
    'facility' => LOG_MAIL
));

Обработчик FirePHP

Этот обработчик отправляет сообщения в FirePHP.

use Phalcon\Logger\Adapter\Firephp as Firephp;

$logger = new Firephp("");
    $logger->log("This is a message");
    $logger->log("This is an error", \Phalcon\Logger::ERROR);
    $logger->error("This is another error");

Реализация собственных адаптеров

Для создания собственных адаптеров лога или расширения существующих необходимо реализовать интерфейс Phalcon\Logger\AdapterInterface.

© 2011–2016 Phalcon Framework Team
Licensed under the Creative Commons Attribution License 3.0.
https://docs.phalconphp.com/en/2.0.0/reference/logging.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API