laravel5日志设置篇(3/3) – 精确到微秒及日志输出位置记录_蒙德伊彼的博客-CSDN博客


本站和网页 https://blog.csdn.net/huuinn/article/details/78308472 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

laravel5日志设置篇(3/3) – 精确到微秒及日志输出位置记录_蒙德伊彼的博客-CSDN博客
laravel5日志设置篇(3/3) – 精确到微秒及日志输出位置记录
蒙德伊彼
于 2017-10-22 10:35:12 发布
2995
收藏
分类专栏:
Laravel框架学习
Laravel进阶技巧
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/huuinn/article/details/78308472
版权
Laravel框架学习
同时被 2 个专栏收录
4 篇文章
0 订阅
订阅专栏
Laravel进阶技巧
5 篇文章
1 订阅
订阅专栏
想要实现的功能
记录日志输出时的时间精度到微秒记录日志输出时程序执行位置(方法/行数)记录进程ID
例如:
app.log
[2017-10-22 10:13:57.833504] production.INFO: -- Startup {"method":"GET","uri":"/v1/stocks"} {"pid":7124,"line":"App\\Bootstrap\\ApplicationLog->startupLog:66"}
[2017-10-22 10:13:57.898702] production.INFO: get stocks info {"pid":7124,"line":"App\\Http\\Controllers\\StocksController->index:66"}
[2017-10-22 10:13:57.903274] production.INFO: -- Shutdown {"time":"70.371[ms]","memory":"2048[kb]"} {"pid":7124,"line":"App\\Bootstrap\\ApplicationLog->handleShutdownLog:81"}
sql.log
[2017-10-22 10:11:19.750913] production.DEBUG: select count(*) as aggregate from `stocks_input` where `stocks_input`.`deleted_at` is null; {"time":0.63} {"pid":7124}
[2017-10-22 10:11:19.752787] production.DEBUG: select * from `stocks_input` where `stocks_input`.`deleted_at` is null order by `created_at` desc limit 10 offset 0; {"time":0.83} {"pid":7124}
[2017-10-22 10:11:19.756438] production.DEBUG: select * from `goods` where `goods`.`id` = 1 limit 1; {"time":0.9} {"pid":7124}
环境
php 7.0.22laravel 5.2.*
具体实现
继承Illuminate\Log\Writer类,复写getDefaultFormatter方法编写Monolog用处理模块1步骤创建的类替换老Writer及注册Monolog用处理模块
ps. 依赖设置
laravel5日志设置篇(1/3) – 记录开始和结束日志
laravel5日志设置篇(2/3) – 记录sql日志
新Write类 (app/Utils/Writer.php)
<?php
namespace App\Utils\Monolog;
use Illuminate\Log\Writer as BaseWriter;
use Monolog\Formatter\LineFormatter;
/**
* 时间精确到微秒
* @package app.Utils.Monolog
*/
class Writer extends BaseWriter
/**
* Get a default Monolog formatter instance.
* @return \Monolog\Formatter\LineFormatter
*/
protected function getDefaultFormatter()
return new LineFormatter(null, 'Y-m-d H:i:s.u', true, true);
Monolog输出处理模块
程序执行位置信息 (app/Utils/Monolog/Processor/IntrospectionProcessor.php)
<?php
namespace App\Utils\Monolog\Processor;
use Monolog\Logger;
/**
* Monolog用处理模块
* 标准IntrospectionProcessor的简化版
* @package app.Utils.Monolog.Processor
*/
class IntrospectionProcessor
private $level;
private $skipClassesPartials;
public function __construct($level = Logger::DEBUG, array $skipClassesPartials = ['Monolog\\', 'Illuminate\\'])
$this->level = Logger::toMonologLevel($level);
$this->skipClassesPartials = $skipClassesPartials;
/**
* @param array $record
* @return array
*/
public function __invoke(array $record)
// return if the level is not high enough
if ($record['level'] < $this->level) {
return $record;
$trace = debug_backtrace();
// skip first since it's always the current method
array_shift($trace);
// the call_user_func call is also skipped
array_shift($trace);
$i = 0;
while (isset($trace[$i]['class'])) {
foreach ($this->skipClassesPartials as $part) {
if (strpos($trace[$i]['class'], $part) !== false) {
$i++;
continue 2;
break;
$line = null;
if (isset($trace[$i]['class'])) {
$line = $trace[$i]['class'];
if (isset($trace[$i]['class'])) {
$line = $line . '->' . $trace[$i]['function'];
} else if (isset($trace[$i - 1]['file'])) {
$line = $trace[$i - 1]['file'];
if (null !== $line && isset($trace[$i - 1]['line'])) {
$line = $line . ':' . $trace[$i - 1]['line'];
$record['extra']['line'] = $line;
return $record;
线程ID信息 (app/Utils/Monolog/Processor/ProcessIdProcessor.php)
<?php
namespace App\Utils\Monolog\Processor;
/**
* Monolog用处理模块
* 标准IntrospectionProcessor的简化版, 原输出键值文字长度过长
* @package app.Utils.Monolog.Processor
*/
class ProcessIdProcessor
/**
* @param array $record
* @return array
*/
public function __invoke(array $record)
$record['extra']['pid'] = getmypid();
return $record;
替换老Writer及注册Monolog用处理模块 (app/Providers/LogServiceProvider.php)
<?php
namespace App\Providers;
// 引入新创建IntrospectionProcessor, ProcessIdProcessor, Writer类
use App\Utils\Monolog\Processor\IntrospectionProcessor;
use App\Utils\Monolog\Processor\ProcessIdProcessor;
use App\Utils\Monolog\Writer;
use Carbon\Carbon;
use Illuminate\Support\ServiceProvider;
use Monolog\Logger as Monolog;
/**
* 日志记录器服务
* @package app.Providers
*/
class LogServiceProvider extends ServiceProvider
/**
* Register the service provider.
* @return void
*/
public function register()
$this->app->singleton('app-log', function () {
return $this->createAppLogger();
});
$this->app->singleton('sql-log', function () {
return $this->createSqlLogger();
});
/**
* Create the app logger.
* @return \Illuminate\Log\Writer
*/
public function createAppLogger()
//新增
$processors = [
new ProcessIdProcessor(),
new IntrospectionProcessor()
];
$log = new Writer(
new Monolog($this->channel(), [], $processors), $this->app['events']
);
$this->configureHandler($log, 'app');
return $log;
/**
* Create the sql logger.
* @return \Illuminate\Log\Writer
*/
public function createSqlLogger()
//新增
$processors = [
new ProcessIdProcessor(),
];
$log = new Writer(
new Monolog($this->channel(), [], $processors), $this->app['events']
);
$this->configureHandler($log, 'sql');
return $log;
...
查看原文:https://www.huuinn.com/archives/343更多技术干货:风匀坊关注公众号:风匀坊
蒙德伊彼
关注
关注
点赞
收藏
打赏
评论
laravel5日志设置篇(3/3) – 精确到微秒及日志输出位置记录
想要实现的功能记录日志输出时的时间精度到微秒记录日志输出时程序执行位置(方法/行数)记录进程ID例如:app.log[2017-10-22 10:13:57.833504] production.INFO: -- Startup {"method":"GET","uri":"/v1/stocks"} {"pid":7124,"line":"App\\Bootstrap\
复制链接
扫一扫
专栏目录
laravel-console-logger:Laravel控制台命令的日志记录和通知
05-07
Laravel控制台记录仪
Laravel控制台命令的日志记录和通知。
Laravel
控制台记录仪
8.x
7.x
6.x
5.8。*
5.7。*
5.6。*
5.5。*
5.5。*
5.4。*
5.4。*
5.3。*
5.3。*
5.2。*
5.2。*
5.1。*
5.1。*
目录
用法
可用方法
频道数
档案频道
通知渠道
电子邮件频道
数据库频道
错误处理上下文异常
Guzzle 6+整合
由Monolog提供支持
故障排除
特质包括在内,但什么都没发生?
几个特征冲突?
赞助商
执照
用法
通过Composer安装软件包:
composer require illuminated/console-logger
使用Illuminated\Console\Loggable特征:
use Illuminated \ Console
laravel日志记录的两种方法
热门推荐
HZX19941018的博客
12-06
1万+
今天,我们通过简单的封装方法,来自定义Laravel日志记录,详情我们可参考这篇文章(Laravel记录日志的两种方法)。
我们先在我们的底层封装一个方法,先引入两个Laravel的函数,然后再封装我们的底层方法,代码如下:
use Monolog\Handler\StreamHandler;
use Monolog\Logger;
static functi...
参与评论
您还未登录,请先
登录
后发表或查看评论
Laravel daily日志保留N天源码分析 + 门面源码分析
最新发布
fendouweiqian的博客
11-21
373
loggin.php 配置。controller 代码。
laravel记录mysql日志_Laravel中两种记录日志的方式
weixin_36078669的博客
02-26
436
下面由Laravel教程栏目给大家介绍Laravel中两种记录日志的方式,希望对需要的朋友有所帮助!利用Monolog基础用法官方的例子,生成日志类对象,进行操作use Monolog\Logger;use Monolog\Handler\StreamHandler;// create a log channel$log = new Logger('name');$log->pushHand...
laravel mysql log_Laravel日志用法详解
weixin_30520605的博客
02-01
221
本文实例讲述了Laravel日志用法。分享给大家供大家参考,具体如下:这里使用的Laravel版本仍是5.2日志是非常重要的。本地开发可以开启调试模式,但是上线的项目查看日志是非常简洁有效的调试手段。Laravel集成了Monolog日志库以便提供多种功能强大的日志处理器。Laravel支持日志方法single, daily, syslog 和 errorlog。例如,如果你想要日志文件按日生成而...
Laravel日志篇 - 调整存储位置格式
eight_eyes的博客
12-05
678
Laravel改造完整版传送门
参考地址:https://learnku.com/docs/laravel/7.x/logging/7469
现有的日志格式不适用于公司,且存储位置不符合公司现有生产环境。
位置调整
原来记录日志位置在storage下
现在想要调整为通过api.exp.com则记录日志到/logs/service/log_api.log下
通过web.exp.com则记录日志到/logs/service/log.log下
修改Laravel的日志配置文件 config/logging.php
Laravel 指定日志文件记录任意日志
凡尘-追梦者
09-14
435
方法一:
use Monolog\Logger;
(new Logger('local'))
->pushHandler(new RotatingFileHandler(storage_path('logs/ios_process/ios.log'), 18))
->info("数据:", ['name' => "小明", 'error' => 'error']);
如下:
上面例子RotatingFileHandler第二个参数18为设置保留多少天,.
laravel5.8(八)日志
camellia的博客
11-11
259
Laravel框架的日志使用的是日志插件Monolog,这个应该是目前比较好用的日志插件之一了。
官方给了一些配置日志的选项。说实话,可能是功力尚浅,没看懂。
这就尴尬了。后百度了一下,大概明白了日志的一些大概的情况。
一:配置官方日志插件
1:配置logging.php
文件位置:./config/logging.php
在数组中添加一下配置
'daily' => [
// 日志驱动
'driver' => 'daily',
laravel翻看php日志,laravel打印查询日志
weixin_36048512的博客
04-09
293
laravel在xdebug调试的时候不能像tp一样查看sql,比较麻烦,在网上查了一下资料,在此做个笔记: 1、使用socketLog来打印sql 到githuh下载socketLog文件,将php文件夹拷贝到项目根目录; 2、在app/Providers/EventServiceProvider.php中的$listen内加入 'Illuminate\Database\Events\Query...
Laravel 和 lumen 自定义每次请求日志输出格式
hailanzi的博客
10-25
834
1、在app/Providers 文件下新建LogServiceProvider.php
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Monolog\Formatter\LineFormatter;
use Monolog\Handler\RotatingFileHandler;
...
laravel翻看php日志,日志详解 · laravel5 · 看云
weixin_39652760的博客
04-09
159
[TOC]# 简介Laravel的日志模块位于Illuminate/Log文件夹下;通过封装Monolog插件提供日志服务;# 配置## 配置文件在config/app.php文件中关于日志模块的配置项有两个,分别如下:~~~// 日志模式,可选择参数有 "single", "daily", "syslog", "errorlog"'log' => env('APP_LOG', 'singl...
Laravel Log 流程
pythonluo的专栏
04-02
2125
Laravel 记录日志也是用了monolog/log ,只是在上面加了一层可配置和包裹了一层
测试代码
Log::channel('zip')->info(' begin');
对应日志配置
'zip' => [
'driver' => 'daily',
'path' => storage_path('logs/zip/zip.log'),
...
Laravel 重写日志,让日志更优雅
11-12
2187
具体文件请移步github
github项目地址
更改目的:
重写了日志格式
加入trace,一次请求的唯一标识
加入error级别信息推送,事例中使用企业微信群助手
让我们可以更优雅、更方便追踪日志信息
将文件 AppTool.php``````Logger.php``````LogServiceProvider.php复制到 app/Providers文件夹下,
将文件BaseCo...
larave 日志自定义配置格式记录调用文件路径与行号
Worm的专栏
04-11
607
larave Monolog日志自定义配置
1、原有的日志记录文件只记录了时间和日志内容没有记录是在哪个文件记录的,给新来的人员查看日志增加了额外的负担。类似下面这样
[2018-04-11 10:25:29] local.INFO: 我是来测试日志的 {"content":1111}
[2018-04-11 10:25:29] local.DEBUG: 我是来测试日志的
[2018...
Laravel 5 SQL语句打印日志
qq_35255775的博客
07-26
932
Laravel 5 用DB自带的方式打印SQL语句:
DB::enableQueryLog();
DB::getQueryLog();
得到的结果语句和参数是分开的,非常不利于验证。
0 => array:3 [▼
"query" => "select * from `mall_users` where `mall_users`.`id` = ? limit ...
Laravel如何实现操作表日志(观察者模式)
心有猛虎,细嗅蔷薇!
08-03
995
前言:
最近工作项目都比较忙,难得稍微有点时间,我来分享一下最近解决的一个账号登录方面的安全问题。
概述:
说到账号登录接口方面的安全问题,大概是分为以下几种:
SQL注入
暴力爆破
伪造响应服务器
我们开发目前防止这些情况出现,最常见的方案就是明文加密,各种各样的验证码、手机短信验证、特殊字符戳过滤、ip白名单、ip黑名单,密文传输等等
问题介绍:
这个项目是一个表单报名项目,前后端分离,前端用的是VUE,后端用的是TP5,流程是用户进行填写会议的密码和验证码,然后如果验证成功就会进入到表单报名的页面
【Laravel系列7.1】日志
硬核项目经理
05-26
2546
日志对于一个框架系统来说,日志和异常处理可以说是非常重要的一个功能组件。我们的项目不管大还是小,对于错误异常都应该是零容忍的状态。异常处理机制可以帮助我们及时发现问题,并且将问题记录到日志中。而日志可以帮助我们掌握系统的运行情况,查找问题原因。总之,日志和异常处理是在系统的运维状态中非常重要的两个功能。日志记录Laravel 中的日志功能的使用非常简单,我们前面讲过的门面...
打印当前日期和时间,记录微秒级时间日志的C程序
yyhustim的专栏
03-26
1908
logtest.h
#ifndef LOGTEST_H
#define LOGTEST_H
#include
#include
#include
extern int Debugmode;
extern int Logmode;
extern int Testmode;
// log file
extern const char *Filepath;
// time param
“相关推荐”对你有帮助么?
非常没帮助
没帮助
一般
有帮助
非常有帮助
提交
©️2022 CSDN
皮肤主题:游动-白
设计师:我叫白小胖
返回首页
蒙德伊彼
CSDN认证博客专家
CSDN认证企业博客
码龄5年
上海基分文化传播有限公司
85
原创
4万+
周排名
60万+
总排名
51万+
访问
等级
4133
积分
74
粉丝
115
获赞
42
评论
611
收藏
私信
关注
热门文章
使用python的pyplot绘制函数
74696
使用python生成ppt
44356
使用opencv查找两张图片不同的部分
43356
python数组循环处理
31053
通过人脸识别查找相似图片
25151
分类专栏
技术屌丝逆袭实验室
10篇
Laravel进阶技巧
5篇
IT手札
15篇
VR
1篇
Git
7篇
CSS
4篇
Python
15篇
Laravel
1篇
JAVA
8篇
JAVASCRIPT
4篇
SPRING ROOT
2篇
SQL
3篇
其他
2篇
UBUNTU
13篇
设计模式
3篇
GoF设计模式
3篇
Laravel框架学习
4篇
python图片识别
4篇
PHP学习
Golang
最新评论
ubuntu下解决matplotlib生成图片中文乱码
来去来去兮:
已解决,谢谢!!!
使用python来抠图
从学习C语言来的:
抠出来的缺东西缺得很严重啊
使用opencv查找两张图片不同的部分
feihum:
匹配出来都没有 调整阀值有啥用,看来匹配还是有漏洞
linux删除超过指定时间天数的文件
要甜甜的:
谢谢分享
类图中的聚合关系(aggregation)和组合关系(composition)比较
wswzb111:
强烈建议此评论直接放到正文开头,简洁明了
您愿意向朋友推荐“博客详情页”吗?
强烈不推荐
不推荐
一般般
推荐
强烈推荐
提交
最新文章
bash将目录下的所有git项目master分支更新到最新
shell指定时间内监听日志并触发curl请求
灰姑娘(GO版)
2019年2篇
2018年26篇
2017年57篇
目录
目录
分类专栏
技术屌丝逆袭实验室
10篇
Laravel进阶技巧
5篇
IT手札
15篇
VR
1篇
Git
7篇
CSS
4篇
Python
15篇
Laravel
1篇
JAVA
8篇
JAVASCRIPT
4篇
SPRING ROOT
2篇
SQL
3篇
其他
2篇
UBUNTU
13篇
设计模式
3篇
GoF设计模式
3篇
Laravel框架学习
4篇
python图片识别
4篇
PHP学习
Golang
目录
评论
被折叠的 条评论
为什么被折叠?
到【灌水乐园】发言
查看更多评论
打赏作者
蒙德伊彼
你的鼓励将是我创作的最大动力
¥2
¥4
¥6
¥10
¥20
输入1-500的整数
余额支付
(余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付
您的余额不足,请更换扫码支付或充值
打赏作者
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额
抵扣说明:
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。
余额充值