Класс Log
Записывает сообщения в настроенные адаптеры Log. Один или несколько адаптеров можно настроить, используя методы Cake Logs. Если вы не настроите адаптеры и запишете в Log, сообщения будут проигнорированы.
Настройка адаптеров Log
Вы можете настроить адаптеры логов в вашем приложении в файле config/app.php. Пример конфигурации:
Log::setConfig('my_log', ['className' => 'FileLog']); Вы можете определить className как любое полное имя класса или использовать короткое имя класса для использования логгеров в пространствах имен App\Log\Engine и Cake\Log\Engine. Вы также можете использовать сокращения плагинов для использования классов логирования, предоставляемых плагинами.
Адаптеры логов должны реализовывать Psr\Log\LoggerInterface, и существует встроенный базовый класс (Cake\Log\Engine\BaseLog), который можно использовать для пользовательских логгеров.
За пределами ключа className, все остальные значения конфигурации будут переданы в конструктор адаптера логирования в виде массива.
Уровни логирования
При настройке логгеров вы можете установить уровни, которые будет обрабатывать логгер. Например, это позволяет отключить сообщения отладки в рабочей среде:
Log::setConfig('default', [
'className' => 'File',
'path' => LOGS,
'levels' => ['error', 'critical', 'alert', 'emergency']
]); Вышеуказанный логгер будет регистрировать только сообщения об ошибках или более высокого уровня. Другие сообщения об ошибках будут проигнорированы.
Области логирования
При настройке логгеров вы можете определить активные области, для которых предназначен логгер. Если определены, только перечисленные области будут обрабатываться логгером. Если вы не определите области, адаптер будет принимать все области, которые соответствуют обработанным уровням.
Log::setConfig('payments', [
'className' => 'File',
'scopes' => ['payment', 'order']
]); Вышеуказанный логгер будет регистрировать только записи журнала, сделанные в областях payment и order. Все остальные области, включая неопределённую область, будут проигнорированы.
Запись в журнал
Вы записываете в журналы, используя Log::write(). Подробнее см. в документации.
Уровни логирования
По умолчанию Cake Log поддерживает все уровни логирования, определенные в RFC 5424. При записи сообщений вы можете использовать именованные методы или соответствующие константы с write().
Log::error('Something horrible happened');
Log::write(LOG_ERR, 'Something horrible happened'); Области логирования
При записи сообщений и настройке адаптеров логов можно указать «области», которые будет обрабатывать логгер. Вы можете рассматривать области как подсистемы в вашем приложении, которые могут потребовать различных настроек логирования. Например, в приложении электронной коммерции вы можете обрабатывать сообщения об ошибках в подсистемах корзины и оформления заказов по-другому, чем в остальной части приложения. Используя области, вы можете контролировать логирование каждой части вашего приложения и также использовать стандартные уровни логирования.
- Cake\Log\Log использует Cake\Core\StaticConfigTrait
Краткое описание свойств
- Внутренний флаг для отслеживания изменений конфигурации.
boolean - Массив, сопоставляющий схемы URL с полными именами классов движка Log
array -
arrayУровни логирования, как описано в RFC 5424 https://tools.ietf.org/html/rfc5424
- Обрабатываемые уровни логирования
array - Класс LogEngineRegistry
Унаследованные свойства
Краткое описание методов
- Инициализирует реестр и конфигурации
-
Загружает определённую конфигурацию и создаёт все определённые адаптеры логирования.
- Метод для удобного логирования сообщений об опасности
- Метод для удобного логирования критических сообщений
- Метод для удобного логирования сообщений отладки
- Метод для удобного логирования сообщений об аварийной ситуации
- Получить движок логирования.
- Метод для удобного логирования сообщений об ошибках
- Метод для удобного логирования сообщений информации
- Получить уровни логирования
- Метод для удобного логирования уведомлений
-
Сбросить все подключенные логгеры. Это полезно при изменении конфигурации логирования или во время тестирования, когда вы хотите сбросить внутреннее состояние класса Log.
-
Этот метод можно использовать для определения адаптеров логирования для приложения или чтения существующей конфигурации.
- Метод для удобного логирования предупреждений
-
Записывает заданное сообщение и тип во все настроенные адаптеры логов. Настроенные адаптеры получают как $level, так и $message. $level — одна из следующих строк/значений.
Подробное описание методов
_loadConfig()source protected static
_loadConfig( )
Загружает определённую конфигурацию и создаёт все определённые адаптеры логирования.
alert()source public static
alert( string $message , string|array $context = [] )
Метод для удобного логирования сообщений об опасности
Параметры
- строка
$message - сообщение журнала
- строка|массив
$contextнеобязательно [] Дополнительные данные, используемые для записи сообщения в журнал. Специальный ключ
scopeможно передать для дальнейшего фильтрации движков логов, которые будут использоваться. Если передаётся строка или массив с числовыми индексами, он будет интерпретироваться как ключscope. См. Cake\Log\Log::setConfig() для получения дополнительной информации о областях логирования.
Возвращает
booleanУспех
critical()source public static
critical( string $message , string|array $context = [] )
Метод для удобного логирования критических сообщений
Параметры
- строка
$message - сообщение журнала
- строка|массив
$contextнеобязательно [] Дополнительные данные, используемые для записи сообщения в журнал. Специальный ключ
scopeможно передать для дальнейшего фильтрации движков логов, которые будут использоваться. Если передаётся строка или массив с числовыми индексами, он будет интерпретироваться как ключscope. См. Cake\Log\Log::setConfig() для получения дополнительной информации о областях логирования.
Возвращает
booleanУспех
debug()source public static
debug( string $message , string|array $context = [] )
Метод для удобного логирования сообщений отладки
Параметры
- строка
$message - сообщение журнала
- строка|массив
$contextнеобязательно [] Дополнительные данные, используемые для записи сообщения в журнал. Специальный ключ
scopeможно передать для дальнейшего фильтрации движков логов, которые будут использоваться. Если передаётся строка или массив с числовыми индексами, он будет интерпретироваться как ключscope. См. Cake\Log\Log::setConfig() для получения дополнительной информации о областях логирования.
Возвращает
booleanУспех
emergency()source public static
emergency( string $message , string|array $context = [] )
Метод для записи сообщений об аварийных ситуациях
Параметры
- строка
$message - сообщение журнала
- строка|массив
$contextнеобязательно [] Дополнительные данные для записи сообщения. Специальный ключ
scopeможет быть передан для дальнейшей фильтрации используемых механизмов журналов. Если передается строка или массив с числовыми индексами, он будет интерпретирован как ключscope. Дополнительную информацию о разделах логирования см. в Cake\Log\Log::setConfig().
Возвращает
booleanУспех
engine()source public static
engine( string $name )
Получение механизма логирования.
Параметры
- строка
$name - Имя ключа настроенного адаптера для получения.
Возвращает
Cake\Log\Engine\BaseLog|falseЭкземпляр BaseLog или false, если не найден
error()source public static
error( string $message , string|array $context = [] )
Метод для записи сообщений об ошибках
Параметры
- строка
$message - сообщение журнала
- строка|массив
$contextнеобязательно [] Дополнительные данные для записи сообщения. Специальный ключ
scopeможет быть передан для дальнейшей фильтрации используемых механизмов журналов. Если передается строка или массив с числовыми индексами, он будет интерпретирован как ключscope. Дополнительную информацию о разделах логирования см. в Cake\Log\Log::setConfig().
Возвращает
booleanУспех
info()source public static
info( string $message , string|array $context = [] )
Метод для записи информационных сообщений
Параметры
- строка
$message - сообщение журнала
- строка|массив
$contextнеобязательно [] Дополнительные данные для записи сообщения. Специальный ключ
scopeможет быть передан для дальнейшей фильтрации используемых механизмов журналов. Если передается строка или массив с числовыми индексами, он будет интерпретирован как ключscope. Дополнительную информацию о разделах логирования см. в Cake\Log\Log::setConfig().
Возвращает
booleanУспех
levels()source public static
levels( )
Получение уровней журнала
Вызовите этот метод для получения текущей конфигурации уровня.
Возвращает
массивактивные уровни журналов
notice()source public static
notice( string $message , string|array $context = [] )
Метод для записи сообщений о замечаниях
Параметры
- строка
$message - сообщение журнала
- строка|массив
$contextнеобязательно [] Дополнительные данные для записи сообщения. Специальный ключ
scopeможет быть передан для дальнейшей фильтрации используемых механизмов журналов. Если передается строка или массив с числовыми индексами, он будет интерпретирован как ключscope. Дополнительную информацию о разделах логирования см. в Cake\Log\Log::setConfig().
Возвращает
booleanУспех
reset()source public static
reset( )
Сбросить все подключенные логгеры. Это полезно при изменении конфигурации логирования или при тестировании, когда необходимо сбросить внутреннее состояние класса Log.
Сбрасывает настроенные адаптеры логирования, а также любые пользовательские уровни логирования. Это также очистит данные конфигурации.
setConfig()source public static
setConfig( string|array $key , array|null $config = null )
Этот метод можно использовать для определения адаптеров логирования для приложения или чтения существующей конфигурации.
Чтобы изменить конфигурацию адаптера во время выполнения, сначала удалите адаптер, а затем переконфигурируйте его.
Логгеры не будут созданы до записи первого сообщения в журнал.
Использование
Настройка кеша.
Log::setConfig('default', $settings); Ввод уже созданного адаптера:
Log::setConfig('default', $instance); Использование функции-фабрики для получения адаптера:
Log::setConfig('default', function () { return new FileLog(); }); Настройка нескольких адаптеров одновременно:
Log::setConfig($arrayOfConfig);
Параметры
- строка|массив
$key - Название конфигурации логгера или массив нескольких конфигураций.
- массив|null
$configнеобязательно null - Массив данных имени => конфигурация для адаптера.
Возбуждает
BadMethodCallExceptionПри попытке модифицировать существующую конфигурацию.
warning()source public static
warning( string $message , string|array $context = [] )
Метод для записи предупреждающих сообщений
Параметры
- строка
$message - сообщение журнала
- строка|массив
$contextнеобязательно [] Дополнительные данные для записи сообщения. Специальный ключ
scopeможет быть передан для дальнейшей фильтрации используемых механизмов журналов. Если передается строка или массив с числовыми индексами, он будет интерпретирован как ключscope. Дополнительную информацию о разделах логирования см. в Cake\Log\Log::setConfig().
Возвращает
booleanУспех
write()source public static
write( integer|string $level , mixed $message , string|array $context = [] )
Записывает данное сообщение и тип во все настроенные адаптеры журналов. Настроенные адаптеры получают как $level, так и $message. $level — одна из следующих строк/значений.
Уровни:
-
LOG_EMERG=> 'emergency', -
LOG_ALERT=> 'alert', -
LOG_CRIT=> 'critical', -
LOG_ERR=> 'error', -
LOG_WARNING=> 'warning', -
LOG_NOTICE=> 'notice', -
LOG_INFO=> 'info', -
LOG_DEBUG=> 'debug',
Основное использование
Запись предупреждения в журнал:
Log::write('warning', 'Stuff is broken here'); Использование разделов
При записи сообщения в журнал можно определить один или несколько разделов для сообщения. Это позволяет обрабатывать сообщения по-разному в зависимости от раздела/функции приложения.
Log::write('warning', 'Payment failed', ['scope' => 'payment']); При настройке логгеров вы можете настроить разделы, которые будет обрабатывать конкретный логгер. При использовании разделов необходимо убедиться, что уровень сообщения и раздел сообщения пересекаются с определенными уровнями и разделами для логгера.
Необработанные сообщения в журнале
Если ни один из настроенных логгеров не может обработать сообщение в журнале (из-за ограничений по уровню или разделу), то сообщение в журнале будет проигнорировано и бесшумно отброшено. Вы можете проверить, произошло ли это, просмотрев возврат write(). Если false, сообщение не было обработано.
Параметры
- целое число|строка
$level Уровень серьезности записываемого сообщения. Значение должно быть целым числом или строкой, соответствующей известному уровню.
- mixed
$message - Содержание сообщения для записи в журнал
- строка|массив
$contextнеобязательно [] Дополнительные данные для записи сообщения. Специальный ключ
scopeможет быть передан для дальнейшей фильтрации используемых механизмов журналов. Если передается строка или массив с числовыми индексами, он будет интерпретирован как ключscope. Дополнительную информацию о разделах логирования см. в Cake\Log\Log::setConfig().
Возвращает
booleanУспех
Возбуждает
InvalidArgumentExceptionЕсли передан недопустимый уровень.
Методы, используемые из Cake\Core\StaticConfigTrait
config()source public static deprecated
config( string|array $key , array|null $config = null )
Этот метод можно использовать для определения адаптеров конфигурации для приложения или чтения существующей конфигурации.
Чтобы изменить конфигурацию адаптера во время выполнения, сначала удалите адаптер, а затем переконфигурируйте его.
Адаптеры не будут построены до тех пор, пока не будет выполнена первая операция.
Использование
Предполагая, что имя класса — Cache, поддерживаются следующие сценарии:
Чтение данных конфигурации:
Cache::config('default'); Настройка движка кэша.
Cache::config('default', $settings); Вставка построенного адаптера:
Cache::config('default', $instance); Настройка нескольких адаптеров одновременно:
Cache::config($arrayOfConfig);
Устаревший
3.4.0 Используйте setConfig()/getConfig() вместо этого.Параметры
- string|array
$key - Имя конфигурации или массив нескольких конфигураций.
- array|null
$configнеобязательно null - Массив пар имя => данные конфигурации для адаптера.
Возвращает
array|nullNull при добавлении конфигурации или массив данных конфигурации при чтении.
Вызывает исключение
BadMethodCallExceptionПри попытке изменить существующую конфигурацию.
configured()source public static
configured( )
Возвращает массив, содержащий указанные конфигурации
Возвращает
string[]Массив конфигураций.
drop()source public static
drop( string $config )
Удаляет построенный адаптер.
Если вы хотите изменить существующую конфигурацию, вы должны удалить её, изменить конфигурацию, а затем добавить её заново.
Если реализуемые объекты поддерживают объект $_registry, имя конфигурации также будет выгружено из реестра.
Параметры
- string
$config - Существующая конфигурация, которую вы хотите удалить.
Возвращает
booleanУспешность удаления, возвращает false, если конфигурация не существует.
dsnClassMap()source public static deprecated
dsnClassMap( array $map = null )
Возвращает или обновляет карту классов DSN для этого класса.
Устаревший
3.4.0 Используйте setDsnClassMap()/getDsnClassMap() вместо этого.Параметры
- array
$mapнеобязательно null - Дополнения/изменения в карте классов для применения.
Возвращает
arraygetConfig()source public static
getConfig( string $key )
Читает существующую конфигурацию.
Параметры
- string
$key - Имя конфигурации.
Возвращает
array|nullМассив данных конфигурации.
getDsnClassMap()source public static
getDsnClassMap( )
Возвращает карту классов DSN для этого класса.
Возвращает
arrayparseDsn()source public static
parseDsn( string $dsn )
Парсит DSN в корректную конфигурацию подключения.
Этот метод позволяет установить DSN с использованием форматирования, аналогичного используемому в PEAR::DB. Вот пример его использования:
$dsn = 'mysql://user:pass@localhost/database?'; $config = ConnectionManager::parseDsn($dsn); $dsn = 'Cake\Log\Engine\FileLog://?types=notice,info,debug&file=debug&path=LOGS'; $config = Log::parseDsn($dsn); $dsn = 'smtp://user:secret@localhost:25?timeout=30&client=null&tls=null'; $config = Email::parseDsn($dsn); $dsn = 'file:///?className=\My\Cache\Engine\FileEngine'; $config = Cache::parseDsn($dsn); $dsn = 'File://?prefix=myapp_cake_core_&serialize=true&duration=+2 minutes&path=/tmp/persistent/'; $config = Cache::parseDsn($dsn);
Для всех классов значение scheme устанавливается как значение className, если явно не указано иное.
Обратите внимание, что аргументы querystring также анализируются и устанавливаются как значения в возвращаемой конфигурации.
Параметры
- string
$dsn - Строка DSN, которая должна быть преобразована в массив конфигурации
Возвращает
arrayМассив конфигурации для хранения после разбора DSN
Вызывает исключение
InvalidArgumentExceptionЕсли не передана строка или передана некорректная строка
setDsnClassMap()source public static
setDsnClassMap( array $map )
Обновляет карту классов DSN для этого класса.
Параметры
- array
$map - Дополнения/изменения в карте классов для применения.
Подробное описание свойств
$_dirtyConfigsource
protected static boolean
Внутренний флаг для отслеживания того, была ли изменена конфигурация.
false
$_dsnClassMapsource
protected static array
Массив, сопоставляющий схемы URL с полными именами классов движка регистрации
[
'console' => 'Cake\Log\Engine\ConsoleLog',
'file' => 'Cake\Log\Engine\FileLog',
'syslog' => 'Cake\Log\Engine\SyslogLog',
] $_levelMapsource
protected static array
Уровни регистрации, как описано в RFC 5424 https://tools.ietf.org/html/rfc5424
[
'emergency' => LOG_EMERG,
'alert' => LOG_ALERT,
'critical' => LOG_CRIT,
'error' => LOG_ERR,
'warning' => LOG_WARNING,
'notice' => LOG_NOTICE,
'info' => LOG_INFO,
'debug' => LOG_DEBUG,
] $_levelssource
protected static array
Обработанные уровни регистрации
[
'emergency',
'alert',
'critical',
'error',
'warning',
'notice',
'info',
'debug'
]
© 2005–present The Cake Software Foundation, Inc.
Licensed under the MIT License.
CakePHP is a registered trademark of Cake Software Foundation, Inc.
We are not endorsed by or affiliated with CakePHP.
https://api.cakephp.org/3.7/class-Cake.Log.Log.html