Laravel 8 自定义 log 日志

通过配置文件定义和记录 log

laravel 的框架的 log 功能的配置文件在 config\logging.php,可见 channel 里自带的一些 log 通道,记录 log 文件默认位于 storage\logs\ 文件夹下,如下图:

我们可以添加一个自定义的通道,如下:

'testmylog' => [
    'driver' => 'single',
    'path' => storage_path('mylogs/Mylog.log'),
    'level' => 'debug',
],


storage_path() 指定的是项目内的 storage 文件夹下,所以 path 为 \storage\mylogs\Mylog.log

定义好 log 通道后,我们可以指定这个通道来向 log 文件内写入内容,如下:

use Illuminate\Support\Facades\Log;

Log::channel('testmylog')->info('hello log testing', ['apple' => 'red', 'banana' => 'yellow']);

通过代码来定义和使用 log

通过代码的形式来定义和记录 log 的方式有两种,分别是通过 Illuminate\Support\Facades\Log 和 Monolog\Logger,下面我们分别举例

Illuminate\Support\Facades\Log

use Illuminate\Support\Facades\Log;


我们先创建一个名为 channel 的 log 通道, 并指定记录的 log 文件的路径
$channel1 = Log::build([
    'driver' => 'single',
    'path' => storage_path('mylogs/channel1.log'),
]);


然后我们将需要记录的信息记录到 log 文件中
$channel1->info('Record in channel 1');


带参数数组记录 log
$channel1->info('Record in channel 1', ['param1' => '1', 'param2' => '2']);


我们也可以将同一条内容同时记录到多个 log 通道指定的文件里

$channel2 = Log::build([
    'driver' => 'single',
    'path' => storage_path('mylogs/channel2.log'),
]);

Log::stack([$channel1, $channel2])->info('Something happened on both channel1 and channel2');

Monolog\Logger

use Monolog\Logger;
use Monolog\Handler\StreamHandler;

我们假定要创建一个名为 mypersionallog 的文件来记录 log, 这个文件位于 storage\mylogs\ 的目录下

创建 logger 对象
$loggerObj = new Logger('mypersionallog');

指定路径
$loggerObj->pushHandler(new StreamHandler(storage_path('logs/mypersionallog.log'), Logger::DEBUG));

写入内容
$loggerObj->info('Say something', ['aa' => 'bb', 'cc' => 'dd']);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值