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]);
经验分享 程序员 微信小程序 职场和发展