Laravel 8 自定义 log 日志
通过配置文件定义和记录 log
laravel 的框架的 log 功能的配置文件在 configlogging.php,可见 channel 里自带的一些 log 通道,记录 log 文件默认位于 storagelogs 文件夹下,如下图:
我们可以添加一个自定义的通道,如下:
testmylog => [ driver => single, path => storage_path(mylogs/Mylog.log), level => debug, ], storage_path() 指定的是项目内的 storage 文件夹下,所以 path 为 storagemylogsMylog.log
定义好 log 通道后,我们可以指定这个通道来向 log 文件内写入内容,如下:
use IlluminateSupportFacadesLog; Log::channel(testmylog)->info(hello log testing, [apple => red, banana => yellow]);
通过代码来定义和使用 log
通过代码的形式来定义和记录 log 的方式有两种,分别是通过 IlluminateSupportFacadesLog 和 MonologLogger,下面我们分别举例
IlluminateSupportFacadesLog
use IlluminateSupportFacadesLog; 我们先创建一个名为 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);
MonologLogger
use MonologLogger; use MonologHandlerStreamHandler; 我们假定要创建一个名为 mypersionallog 的文件来记录 log, 这个文件位于 storagemylogs 的目录下 创建 logger 对象 $loggerObj = new Logger(mypersionallog); 指定路径 $loggerObj->pushHandler(new StreamHandler(storage_path(logs/mypersionallog.log), Logger::DEBUG)); 写入内容 $loggerObj->info(Say something, [aa => bb, cc => dd]);
下一篇:
vs code 代码格式化整理