beat / colored-logging
Beat项目中彩色日志的实用类。
Requires
- php: >=7.4
- bramus/monolog-colored-line-formatter: 3.0.*
- laravel/framework: ^v8.83
This package is auto-updated.
Last update: 2024-09-16 20:24:25 UTC
README
实现类,允许在Laravel项目的文本日志文件中添加颜色和模型识别信息。日志文件在文本编辑器中查看时不太有用,因为消息开头和结尾包含格式化字符以改变前景和背景颜色,但使用支持该功能的控制台查看时则容易跟踪。
格式化器还包括用户信息作为日志头的一部分,以便一眼就能知道日志生成时识别了哪个模型。
基于Beat/Logistics的原始实现,后者又使用了bramus/monolog-colored-line-formatter
。
安装
该包不托管在公共包仓库如Packagist中,因此需要在要使用的项目的composer.json
中配置以访问包含包代码的仓库。
修改要安装项目的composer.json
如有疑问,请遵循Composer文档中描述的说明。
大致上,需要在composer.json
中添加以下信息,将版本替换为合适的字符串
{
[...],
"repositories": [
"type": "vcs",
"url": "git@10.45.5.2:beat/colored-logging"
],
"require": {
[...],
"beat/colored-logging": "<tag or branch name or hash>"
}
[...]
}
在仓库部分的"url"字段中应该有一个字符串,允许连接到代码仓库。运行composer的机器必须安装Git和SSH,SSH配置必须允许连接到托管仓库的机器并读取它。这非常重要,否则composer无法安装依赖项。
更新composer.json
后,需要运行composer以下载新的依赖项:composer update
。
关于仓库访问
composer用于下载仓库的SSH应该具有类似的配置(在Linux中通常是$HOME/.ssh/config
)。当然,同一个SSH应该有访问仓库的密钥(Beatlab的密钥,如果是从船外,还有Taycan的密钥)。
# Solo necesario si se ataca desde fuera de la nave.
Host taycan
Hostname 88.26.234.124
Port 18822
User beat
IdentityFile ~/.ssh/id_taycan
IdentitiesOnly yes
Host 10.45.5.2
Port 2224
User git
IdentitiesOnly yes
IdentityFile ~/.ssh/id_beatlab
# Comentar esta línea si estamos fuera de la nave.
ProxyJump taycan
配置
该包目前不需要ServiceProvider(尽管我们可能在未来添加一个,允许配置日志格式的某些参数)。需要修改Laravel项目的日志配置,将我们的格式化器添加到Monolog中。
配置格式化器
在logging.php
文件中,需要将Tap CustomColoredLogTap
添加到配置的日志文件中。例如
// Extracto de config/logging.php
// ...
'channels' => [
'main' => [
'driver' => 'daily',
'path' => storage_path('logs/main/main.log'),
'level' => 'debug',
'days' => 14,
'permission' => 0777,
'tap' => [CustomColoredLogTap::class],
],
],
// ...
默认情况下,格式化器仅限于添加颜色行,不修改日志内容。可以通过以下配置来配置应用的修改器,也应在logging.php
中定义
'record_mutators' => [
\Beat\ColoredLogging\RecordMutators\InternalTrim::class,
\Beat\ColoredLogging\RecordMutators\AddAuthInfo::class,
],
每个修改器都对日志消息执行某些操作。删除或添加合适的修改器。一些可能需要额外的步骤。
以下将描述每个现有的修改器。
AddAuthInfo
此修改器将用户识别信息添加到日志消息中。默认情况下,如果没有其他修改,它将在日志头中添加类名和标识符。
[2023-08-03 11:23:42] testing.Usuario#123.INFO: Something happened!
如果识别出的模型实现了LoggableAuthenticatable
接口,则可以自定义日志消息中新节点的内容。例如
use \Beat\ColoredLogging\Contracts\LoggableAuthenticatable;
class Usuario extends Authenticatable implements LoggableAuthenticatable
{
// [...]
public function loggingString(): string
{
// Incluir aquí cualquier información relevante, como Almacén, tipo de identificación, ...
return $this->alias;
}
}
例如,在一个物流系统如Beat Logistics中,该接口将由Operario
类实现,并可能返回包含以下信息的字符串:
- 操作员的别名
- 操作员的仓库
- 操作员是否为模拟、系统或普通操作员
- 使用了哪种认证类型(Token、JWT、IP等)
- 配置的环境
- 配置的公司
InternalTrim
这是一个简单的修饰符,不需要自定义。它用于从日志消息中删除多余的空格。