Класс 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 - сообщение журнала
- строка|массив
$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 Уровень серьезности записываемого сообщения. Значение должно быть целым числом или строкой, соответствующей известному уровню.
- смешанное
$message - Содержимое сообщения для записи в журнал
- строка|массив
$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–2017 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.4/class-Cake.Log.Log.html