Класс Log
Записывает сообщения в настроенные адаптеры Log. Один или несколько адаптеров можно настроить, используя методы Cake Logs. Если вы не настраиваете адаптеры и записываете в Log, сообщения будут проигнорированы.
Настройка адаптеров Log
Вы можете настроить адаптеры логов в файле вашей config/app.php. Пример конфигурации:
Log::setConfig('my_log', ['className' => 'FileLog']); Вы можете определить className как любое полностью квалифицированное имя класса или использовать сокращенное имя класса для использования логгеров в пространствах имен App\Log\Engine и Cake\Log\Engine. Вы также можете использовать сокращенное имя плагина для использования классов логирования, предоставляемых плагинами.
Адаптеры Log должны реализовывать 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
Унаследованные свойства
Резюме методов
- Инициализирует реестр и конфигурации
-
Загружает определенную конфигурацию и создает все определенные адаптеры логирования.
- Удобный метод для записи сообщений об alert
- Удобный метод для записи критических сообщений
- Удобный метод для записи отладочных сообщений
- Удобный метод для записи сообщений об чрезвычайной ситуации
- Получить движок логирования.
- Удобный метод для записи сообщений об ошибках
- Удобный метод для записи информационных сообщений
- Получить уровни логов
- Удобный метод для записи уведомлений
-
Сбросить все подключенные логгеры. Это полезно при изменении конфигурации ведения журнала или во время тестирования, когда вы хотите сбросить внутреннее состояние класса Log.
-
Этот метод можно использовать для определения адаптеров ведения журнала для приложения или чтения существующей конфигурации.
- Удобный метод для записи предупреждающих сообщений
-
Записывает заданное сообщение и тип во все настроенные адаптеры ведения журнала. Настроенные адаптеры получают как переменную $level, так и $message. $level — это одна из следующих строк/значений.
Подробное описание методов
_loadConfig()source protected static
_loadConfig( )
Загружает определенную конфигурацию и создает все определенные адаптеры логирования.
alert()source public static
alert( string $message , string|array $context = [] )
Удобный метод для записи сообщений об alert
Параметры
- строка
$message - сообщение лога
- строка|массив
$contextoptional [] Дополнительные данные, используемые для записи сообщения в журнал. Специальный ключ
scopeможет быть передан для дальнейшей фильтрации используемых движков лога. Если передана строка или массив с числовыми индексами, он будет обработан как ключscope. Дополнительная информация о областях логирования см. в Cake\Log\Log::setConfig().
Возвращает
booleanУспех
critical()source public static
critical( string $message , string|array $context = [] )
Удобный метод для записи критических сообщений
Параметры
- строка
$message - сообщение лога
- строка|массив
$contextoptional [] Дополнительные данные, используемые для записи сообщения в журнал. Специальный ключ
scopeможет быть передан для дальнейшей фильтрации используемых движков лога. Если передана строка или массив с числовыми индексами, он будет обработан как ключscope. Дополнительная информация о областях логирования см. в Cake\Log\Log::setConfig().
Возвращает
booleanУспех
debug()source public static
debug( string $message , string|array $context = [] )
Удобный метод для записи отладочных сообщений
Параметры
- строка
$message - сообщение лога
- строка|массив
$contextoptional [] Дополнительные данные, используемые для записи сообщения в журнал. Специальный ключ
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 Уровень серьезности сообщения, записываемого в журнал. Значение должно быть целым числом или строкой, соответствующей известному уровню.
- смешанное
$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
$configoptional null - Массив с именем и данными конфигурации для адаптера.
Возвращает
array|nullNull при добавлении конфигурации или массив данных конфигурации при чтении.
Выбрасывает
BadMethodCallExceptionПри попытке изменения существующей конфигурации.
configured()source public static
configured( )
Возвращает массив, содержащий указанные конфигурации.
Возвращает
arrayМассив конфигураций.
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
$mapoptional 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, если не указано иное.
Обратите внимание, что аргументы строки запроса также анализируются и устанавливаются как значения в возвращаемой конфигурации.
Параметры
- 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.6/class-Cake.Log.Log.html