Класс 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 с полными именами классов лог-движков.
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 [] )
Метод для удобного регистрации сообщений об аварийных ситуациях
Параметры
- string
$message - сообщение журнала
- string|array
$contextнеобязательно [] Дополнительные данные для регистрации сообщения. Специальный ключ
scopeможет быть передан для дальнейшей фильтрации используемых механизмов журнала. Если передается строка или массив с числовыми индексами, он будет обработан как ключscope. См. Cake\Log\Log::setConfig() для получения дополнительной информации о разделах журнала.
Возвращает
booleanУспех
engine()source public static
engine( string $name )
Получить механизм регистрации.
Параметры
- string
$name - Имя ключа настроенного адаптера для получения.
Возвращает
Cake\Log\Engine\BaseLog|falseЭкземпляр BaseLog или false, если не найден
error()source public static
error( string $message , string|array $context [] )
Метод для удобного регистрации сообщений об ошибках
Параметры
- string
$message - сообщение журнала
- string|array
$contextнеобязательно [] Дополнительные данные для регистрации сообщения. Специальный ключ
scopeможет быть передан для дальнейшей фильтрации используемых механизмов журнала. Если передается строка или массив с числовыми индексами, он будет обработан как ключscope. См. Cake\Log\Log::setConfig() для получения дополнительной информации о разделах журнала.
Возвращает
booleanУспех
info()source public static
info( string $message , string|array $context [] )
Метод для удобного регистрации информационных сообщений
Параметры
- string
$message - сообщение журнала
- string|array
$contextнеобязательно [] Дополнительные данные для регистрации сообщения. Специальный ключ
scopeможет быть передан для дальнейшей фильтрации используемых механизмов журнала. Если передается строка или массив с числовыми индексами, он будет обработан как ключscope. См. Cake\Log\Log::setConfig() для получения дополнительной информации о разделах журнала.
Возвращает
booleanУспех
levels()source public static
levels( )
Получить уровни журнала
Вызовите этот метод, чтобы получить текущую конфигурацию уровня.
Возвращает
arrayактивные уровни журналов
notice()source public static
notice( string $message , string|array $context [] )
Метод для удобного регистрации информационных сообщений
Параметры
- string
$message - сообщение журнала
- string|array
$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);
Параметры
- string|array
$key - Имя конфигурации регистратора или массив нескольких конфигураций.
- array|null
$configнеобязательно null - Массив данных конфигурации адаптера, имеющий имя как ключ.
Выбрасывает
BadMethodCallExceptionПри попытке изменить существующую конфигурацию.
warning()source public static
warning( string $message , string|array $context [] )
Метод для удобного регистрации предупреждений
Параметры
- string
$message - сообщение журнала
- string|array
$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=> 'аварийный', -
LOG_ALERT=> 'сигнал тревоги', -
LOG_CRIT=> 'критический', -
LOG_ERR=> 'ошибка', -
LOG_WARNING=> 'предупреждение', -
LOG_NOTICE=> 'уведомление', -
LOG_INFO=> 'информация', -
LOG_DEBUG=> 'отладка',
Основное использование
Запись сообщения 'предупреждение' в журналы:
Log::write('warning', 'Stuff is broken here'); Использование разделов
При записи сообщения журнала вы можете определить один или несколько разделов для сообщения. Это позволяет обрабатывать сообщения по-разному в зависимости от раздела/функции приложения.
Log::write('warning', 'Payment failed', ['scope' => 'payment']); При настройке регистраторов вы можете настроить разделы, которые будет обрабатывать конкретный регистратор. При использовании разделов необходимо убедиться, что уровень сообщения и раздел сообщения пересекаются с определенными уровнями и разделами для регистратора.
Необработанные сообщения журнала
Если ни один настроенный регистратор не может обработать сообщение журнала (из-за ограничений по уровню или разделу), то сообщение журнала будет проигнорировано и бесшумно удалено. Вы можете проверить, произошло ли это, проверив результат write(). Если false, сообщение не было обработано.
Параметры
- integer|string
$level Уровень серьезности сообщения, которое записывается. Значение должно быть целым числом или строкой, соответствующей известному уровню.
- mixed
$message - Содержимое сообщения для регистрации
- string|array
$contextнеобязательно [] Дополнительные данные для регистрации сообщения. Специальный ключ
scopeможет быть передан для дальнейшей фильтрации используемых механизмов журнала. Если передается строка или массив с числовыми индексами, он будет обработан как ключscope. См. Cake\Log\Log::setConfig() для получения дополнительной информации о разделах журнала.
Возвращает
booleanУспех
Выбрасывает
InvalidArgumentExceptionЕсли передан недопустимый уровень.
Методы, используемые из Cake\Core\StaticConfigTrait
config()source public static
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( )
Возвращает массив, содержащий именованные конфигурации
Возвращает
arrayМассив конфигураций.
drop()source public static
drop( string $config )
Удаляет сконструированный адаптер.
Если вы хотите изменить существующую конфигурацию, вы должны удалить её, изменить конфигурацию, а затем повторно добавить.
Если реализующие объекты поддерживают объект $_registry, именованная конфигурация также будет выгружена из реестра.
Параметры
- string
$config - Существующая конфигурация, которую вы хотите удалить.
Возвращает
booleanУспешность удаления, возвращает false, если конфигурация не существует.
dsnClassMap()source public static
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, если не указано иное.
Обратите внимание, что аргументы строки запроса также парсятся и устанавливаются как значения в возвращаемой конфигурации.
Параметры
- 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–2018 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.5/class-Cake.Log.Log.html