schalkt / log
简单易配置的PHP日志文件系统
2.1.2
2024-04-06 10:46 UTC
Requires
- php: 8.*
Requires (Dev)
- phpunit/phpunit: ^11.1
README
一个基于模式的路径和消息的简单日志系统。对象和数组会自动转换为格式化的JSON。您还可以创建CSV文件。无需日志轮转,如果需要,只需删除旧的日志文件夹。
安装
composer require schalkt/log
特性
- 基于模式的日志文件路径:
/{TYPE}/{YEAR}/{YEAR}-{MONTH}/{TYPE}-{MONTH}-{DAY}
- 基于模式的行:
{DATE} | {STATUS} --- {MESSAGE}
- 对象和数组会自动转换为格式化的JSON
- 可定制的CSV行模式:
'"{DATE}";{MESSAGE};"{BACKTRACE.CLASS}";"{BACKTRACE.FUNCTION}"'
- 配置中的多个日志类型
可用日志级别
Log::to()->info($message, $title = null);
Log::to()->error($message, $title = null);
Log::to()->critical($message, $title = null);
Log::to()->warning($message, $title = null);
Log::to()->notice($message, $title = null);
Log::to()->debug($message, $title = null);
Log::to()->exception(\Exception $ex, $title = null);
示例
包含 {TYPE}, {YEAR}, {MONTH} 和 {DATE} 模式的示例文件夹结构
/storage/logs - /default - 2021 - 2022 - /logins - /2021 - /2022 - /2022-09 - /2022-10 - /INFO-2022-10-20.log - /INFO-2022-10-21.log - /INFO-2022-10-22.log - /ERROR-2022-10-22.log
使用默认配置
use Schalkt\Slog\Log; require_once '/vendor/autoload.php'; Log::to()->info('Hello World!');
更改默认日志文件夹
use Schalkt\Slog\Log; require_once '/vendor/autoload.php'; Log::default(["folder" => APP_PATH . '/storage/logs/default']); Log::to()->info('Hello World!');
添加新的配置
use Schalkt\Slog\Log; require_once '/vendor/autoload.php'; Log::config('import', [ 'folder' => APP_PATH . '/storage/logs/import', 'folder_chmod' => 0700, 'pattern_row' => '{DATE} {EOL} {STATUS} {EOL} {MESSAGE} {EOL} {REQUEST}', ]); // add an error to the import log Log::to('import')->error('Unique id required');
从文件加载自定义配置
use Schalkt\Slog\Log; require_once '/vendor/autoload.php'; // set config file path Log::configs('./config/logs.php'); // add an error to the default log Log::to()->error('Password required'); // add an input array to the login log with title Log::to('login')->notice($input, 'Invalid password');
配置
默认配置
return [ 'default' => [ "folder" => APP_PATH . '/storage/logs/default', "folder_chmod" => 0770, "pattern_file" => "/{YEAR}-{MONTH}/{TYPE}-{YEAR}-{MONTH}-{DAY}", "pattern_row" => "{DATE} | {STATUS} --- {MESSAGE}", "extension" => "log", "format_date" => 'Y-m-d H:i:s', ] ];
自定义配置文件
return [ "csv" => [ "folder" => APP_PATH . '/storage/logs/csv', "header" => '"date";"message";"class";"function"', "pattern_file" => "/{TYPE}/{YEAR}-{MONTH}/{TYPE}-{YEAR}-{MONTH}-{DAY}", "pattern_row" => '"{DATE}";{MESSAGE};"{BACKTRACE.CLASS}";"{BACKTRACE.FUNCTION}"', "extension" => "csv", ], "login" => [ "folder" => APP_PATH . '/storage/logs/login', "pattern_file" => "/logins/{TYPE}/{YEAR}-{MONTH}-{DAY}", "pattern_row" => "{DATE} {TITLE} {MESSAGE}", ], ];
模式中的可用变量
- {MESSAGE} <- 函数的第一个参数(必需,字符串、数组、对象、任何类型)
- {TITLE} <- 函数的第二个参数(非必需,字符串或数字)
- {TYPE} <- 来自日志配置
- {STATUS} <- info、error、critical、warning、notice、debug 或 exception
- {REQUEST} <- 输出 $_REQUEST
- {RAWBODY} <- file_get_contents('php://input')
- {EOL} <- PHP_EOL
- {DATE} <- 根据配置 "format_date" 日期,默认 "Y-m-d H:i:s"
- {YEAR} <- date('Y')
- {MONTH} <- date('m')
- {DAY} <- date('d')
- {HOUR} <- date('H')
- {MIN} <- date('i')
待办事项
- 可配置的输出(STDOUT、STDERR)