monolog 日志
1 安装 composer require monolog/monolog 2 使用 // 创建日志服务
$logger = new Logger('my_logger’); // 定义一个handle
$stream = new StreamHandler(__DIR__.'/log/hello.log', Logger::DEBUG); // 设置输出的格式 // 默认的日期格式是 "Y-m-d H:i:s"
$dateFormat = "Y n j, g:i a"; // 输出格式
$output = "%datetime% > %level_name% > %message% %context% %extra%\n";
$formatter = new LineFormatter($output, $dateFormat);
$stream->setFormatter($formatter); // 把处理器放到对象里面 $this->handles
$logger->pushHandler($stream); // 现在你就可以用日志服务了
$logger->info('My logger is now ready',['hello']); // 日志格式
2020 9 25, 9:43 pm > INFO > My logger is now ready ["hello"] {"name":"brady","dummy":"Hello world!"} 3 其他日志格式 按日期 生成 $logger->pushHandler(new \Monolog\Handler\RotatingFileHandler(__DIR__."/log/hello.log",Logger::DEBUG)); //这个会按天产生日志 hello-2020-09-01.log [2020-09-25T21:43:34.047016+08:00] my_logger.INFO: My logger is now ready ["hello"] {"name":"brady","dummy":"Hello world!"} logstash格式 $stream1 = new StreamHandler(__DIR__.'/log/world.log', Logger::DEBUG);
$logstashformatter = new \Monolog\Formatter\LogstashFormatter("ml","system","test","world");
$stream1->setFormatter($logstashformatter);
$logger->pushHandler($stream1); {"@timestamp":"2020-09-25T21:43:34.047016+08:00","@version":1,"host":"system","message":"My logger is now ready","type":"ml","channel":"my_logger","level":"INFO","monolog_level":200,"test":{"name":"brady","dummy":"Hello world!"},"world":["hello"]} json格式 $stream2 = new \Monolog\Handler\RotatingFileHandler("./log/wang.log");
$json = new \Monolog\Formatter\JsonFormatter();
$stream2->setFormatter($json);
$logger->pushHandler($stream2); {"message":"My logger is now ready","context":["hello"],"level":200,"level_name":"INFO","channel":"my_logger","extra":{"name":"brady","dummy":"Hello world!"},"traceId":"trrrrrrrrr","timestamp":"2020-09-25T21:32:47.958836+0800"}ArrayArrayArray{"message":"My logger is now ready","context":["hello"],"level":200,"level_name":"INFO","channel":"my_logger","datetime":"2020-09-25T21:47:27.521873+08:00","extra":{"name":"brady","dummy":"Hello world!"},"traceId":"trrrrrrrrr"} <?php require "./vendor/autoload.php"; error_reporting(E_ALL);
ini_set('display_errors', '1');
require __DIR__.'/vendor/autoload.php'; use Monolog\Formatter\LineFormatter;
use Monolog\Handler\FirePHPHandler;
use Monolog\Logger;
use Monolog\Handler\StreamHandler; // 创建日志服务
$logger = new Logger('my_logger'); // 定义一个handle
$stream = new StreamHandler(__DIR__.'/log/wei.log', Logger::DEBUG); // 默认的日期格式是 "Y-m-d H:i:s"
$dateFormat = "Y n j, g:i a"; // 输出格式
$output = "%datetime% > %level_name% > %message% %context% %extra%\n";
$formatter = new LineFormatter($output, $dateFormat);
$stream->setFormatter($formatter); // 把处理器放到对象里面 $this->handles
$logger->pushHandler($stream); //第二个处理器 传到hello.log 里面
$logger->pushHandler(new \Monolog\Handler\RotatingFileHandler(__DIR__."/log/hello.log",Logger::DEBUG)); // 处理器 额外的数据给
$logger->pushProcessor(function ($record) {
$record['extra']['dummy'] = 'Hello world!';
return $record;
}); // 第三个处理器
$stream1 = new StreamHandler(__DIR__.'/log/world.log', Logger::DEBUG);
$logstashformatter = new \Monolog\Formatter\LogstashFormatter("ml","system","test","world");
$stream1->setFormatter($logstashformatter);
$logger->pushHandler($stream1); //第四个处理器
$stream2 = new \Monolog\Handler\RotatingFileHandler("./log/wang.log");
$json = new \Monolog\Formatter\JsonFormatter();
$stream2->setFormatter($json);
$logger->pushHandler($stream2); // 处理器 额外的数据给
$logger->pushProcessor(function ($record) {
$record['extra']['name'] = 'brady';
$record['traceId'] = "trrrrrrrrr"; // 好像不行 只能是extra里面 因为record没这个字段
return $record;
}); // 现在你就可以用日志服务了
$logger->info('My logger is now ready',['hello']);
monolog 日志的更多相关文章
- lumen 错误&日志
1.简介 开始一个新的Lumen项目的时候,错误和异常处理已经默认为你配置好了.此外,Lumen还集成了提供各种功能强大日志处理器的Monolog日志库. 2.配置 2.1 错误详情 配置文件.env ...
- Lumen框架-错误&日志
介绍 当你开始一个新的Lumen项目的时候,错误和异常功能,已经在框架中注入了.此外,Lumen还集成了Monolog日志函数,支持和提供多种强大的日志处理功能. 配置 错误详情 大量的错误信息在你的 ...
- php 日志模块源码解析
php日志模块设计 Monolog 是PHP的一个日志类库解析 整体介绍:monolog日志模块遵循 PSR3 的接口规范.主要有日志格式类接口(格式化日志信息),处理类接口(写日志的驱动,通过扩展写 ...
- laravel的monolog使用
Laravel 集成了 Monolog 日志函数库,Monolog 支持和提供多种强大的日志处理功能. 1.设置,日志模式 (1)Laravel 提供可立即使用的 single.daily.syslo ...
- monolog封装
做一下基本关于Monolog的基本介绍: Monolog是基于PHP的日志类库. 介绍就到这,言归正传 安装 安装最新版本:(composer 还没安装的~:https://www.phpcompos ...
- Composer使用
是什么 如果你知道yum.apt-get.npm.bower等命令中的一种或者多种,那么,你也能很快知道composer是什么了.没错,它就是PHP里快速安装类库的.平时,我们安装一个PHP类库,需要 ...
- Composer : php依赖管理工具
原始时代 我记得在当时用php的时候还没有composer,只有个pear,但是不好用呀,还不如直接在互联网上到处复制代码了,更快更不容易出错,当时也没有github这么好的社区工具了 总结如下 代码 ...
- Composer PHP 依赖管理工具
composer 是 PHP 用来管理依赖(dependency)关系的工具.你可以在自己的项目中声明所依赖的外部工具库(libraries),Composer 会帮你安装这些依赖的库文件. 依赖管理 ...
- lumen
HTTP路由 基本路由 路由参数 必填参数 可选参数 正则表达式约束 命名路由 路由组 中间件 命令空间 路由前缀 基本路由 你可以在 route/web.php 文件中定义应用程序的全部路由.最基本 ...
随机推荐
- html基础:css样式2
1.字体边框基本设置 <!--border边框:solid实线,red红色,1px粗--> <!--font-weight: bolder字体加粗 font-size:字体大小--& ...
- 数据库连接池设计和实现(Java版本)
1 前言 数据库连接池是目前系统开发必须面对和考虑的问题,原理并不复杂,主要是减少重复连接数据库的代价:在系统中创建预期数量的数据库连接,并将这些连接以一个集合或类似生活中的池一样管理起来,用到的时候 ...
- Coneology(POJ 2932)
原题如下: Coneology Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 4937 Accepted: 1086 D ...
- C#开发PACS医学影像处理系统(十一):Dicom影像挂片协议
通俗点说,挂片协议可以看作整个系统的一个相对复杂一点的配置文件,可以用JSON或XML格式来读取与保存, 另外,可以制作一个独立的exe配置程序来管理这些挂片协议. 假设配置了CT的挂片协议的右键菜单 ...
- Python 开发GUI之UI界面的三种引入形式
[纯手工代码] # -*- coding: utf-8 -*- # Author:Jack LEE # FileName:main # CreatedDate: 2020/9/17 # 手写代码的基础 ...
- Linux实战(14):Ubuntu修改root默认登陆
第一步 首先登录系统,创建root用户的密码 在终端输入命令: sudo passwd root 然后输入设置的密码,这样就完成了设置root用户密码的步骤 第二步 修改文件 sudo nano /u ...
- php判断请求方式
1 /** 2 * 判断是否为get请求 3 * 4 * @return bool 5 */ 6 function is_get():bool 7 { 8 return $_SERVER['REQUE ...
- 转载:tf.gfile的用法
https://blog.csdn.net/a373595475/article/details/79693430
- Maven依赖管理之BOM
目录 什么是BOM 一个BOM的格式 怎么使用BOM 通过parent引用 通过dependencyManagement引用 怎么查看依赖的某个BOM的具体清单 版本冲突时的一些规则 何为依赖调节 参 ...
- spring cloud consul 服务治理
对照系统安装响应consul文件(以window为例) 解压文件之后配置环境,进入Path添加文件所在目录, 测试:在文件所在目录下进入指令操作 输入 consul agent -dev 启动成功,在 ...