Laravel框架使用monolog_mysql实现将系统日志信息保存到mysql数据库的方法


Posted in PHP onAugust 16, 2018

本文实例讲述了Laravel框架使用monolog_mysql实现将系统日志信息保存到mysql数据库的方法。分享给大家供大家参考,具体如下:

Laravel中使用monolog_mysql将系统日志信息保存到mysql数据库

源码参考: https://github.com/markhilton/monolog-mysql

一、安装Installation

在文件根目录:

composer require markhilton/monolog-mysql

发现composer.json文件里的"require"多了一行:

"markhilton/monolog-mysql": "^0.1.6",

如果执行报错检查php版本和laravel(5.5以上)版本,

或者可以自己手动粘贴"markhilton/monolog-mysql": "^0.1.6"composer.json上去,

然后执行:

compser update

可以达到相同的效果

成功后发现vendor里面多了一个markhilton的文件夹

二、在config/app.php 的'providers'里面加入

'providers' => array( // ... Logger\Laravel\Provider\MonologMysqlHandlerServiceProvider::class,);

三、生成数据库文件

Publish config using Laravel Artisan CLI.
php artisan vendor:publish

执行完上面语句发现database/migration里多了一个create_logs_table的文件

将文件重命名为 2018_03_14_034420_create_logs_table(一定要是这种格式的文件名才可以执行数据库迁移)

可以自定义数据库表名称,默认为logs ,在这里我改成sys_log

然后执行下面语句:

四、数据库迁移Migrate tables.

php artisan migrate

生成了一个sys_log的表

五、应用集成 Application Integration

在bootstrap/app.php里面加入

$app->configureMonologUsing(function($monolog) use($app) { $monolog->pushHandler(new Logger\Monolog\Handler\MysqlHandler());});

六、配置环境 Environment configuration

在.env的配置文件中加入(保存日志的数据库连接类型,以及保存日志的表名称)

DB_LOG_TABLE=sys_log //保存日志的数据库表名称
DB_LOG_CONNECTION=mysql //保存日志的数据库连接类型

七、修改

真正实现将日志插入数据库的核心文件位置在:
/vendor/markhilton/monolog-mysql/src/Logger/Monolog/Handler/MysqlHandler.php

将自定义的表名称修改为sys_log

<?php
namespace Logger\Monolog\Handler;
use DB;
use Illuminate\Support\Facades\Auth;
use Monolog\Logger;
use Monolog\Handler\AbstractProcessingHandler;
class MysqlHandler extends AbstractProcessingHandler
{
protected $table;
protected $connection;
public function __construct($level = Logger::DEBUG, $bubble = true)
{
$this->table = env('DB_LOG_TABLE', 'sys_log');
$this->connection = env('DB_LOG_CONNECTION', env('DB_CONNECTION', 'mysql'));
parent::__construct($level, $bubble);
}
protected function write(array $record)
{
$data = [
'instance' => gethostname(),
'message' => $record['message'],
'channel' => $record['channel'],
'level' => $record['level'],
'level_name' => $record['level_name'],
'context' => json_encode($record['context']),
'remote_addr' => isset($_SERVER['REMOTE_ADDR']) ? ip2long($_SERVER['REMOTE_ADDR']) : null,
'user_agent' => isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : null,
'created_by' => Auth::id() > 0 ? Auth::id() : null,
'created_at' => $record['datetime']->format('Y-m-d H:i:s')
];
DB::connection($this->connection)->table($this->table)->insert($data);
}
}

希望本文所述对大家基于Laravel框架的PHP程序设计有所帮助。

PHP 相关文章推荐
dede3.1分页文字采集过滤规则详说(图文教程)续二
Apr 03 PHP
php结合飞信 免费天气预报短信
May 07 PHP
用Zend Encode编写开发PHP程序
Feb 21 PHP
解析PHP将对象转换成数组的方法(兼容多维数组类型)
Jun 21 PHP
PHP登录环节防止sql注入的方法浅析
Jun 30 PHP
php批量删除操作(数据访问)
May 23 PHP
PHP使用星号替代用户名手机和邮箱的实现代码
Feb 07 PHP
Linux基于php-fpm模式的lamp搭建phpmyadmin的方法
Oct 25 PHP
ThinkPHP3.2.3框架实现的空模块、空控制器、空操作,跳转到错误404页面图文详解
Apr 03 PHP
PHP Primary script unknown 解决方法总结
Aug 22 PHP
PHP使用openssl扩展实现加解密方法示例
Feb 20 PHP
php+mysql实现的无限分类方法类定义与使用示例
May 27 PHP
Laravel中的chunk组块结果集处理与注意问题
Aug 15 #PHP
PHP curl批处理及多请求并发实现方法分析
Aug 15 #PHP
php使用curl_init()和curl_multi_init()多线程的速度比较详解
Aug 15 #PHP
php使用curl获取header检测开启GZip压缩的方法
Aug 15 #PHP
深入研究PHP中的preg_replace和代码执行
Aug 15 #PHP
PHP中一个有趣的preg_replace函数详解
Aug 15 #PHP
PHP使用curl_multi_select解决curl_multi网页假死问题的方法
Aug 15 #PHP
You might like
用PHP代替JS玩转DOM的思路及示例代码
2014/06/15 PHP
朋友网关于QQ相关的PHP代码(研究QQ的绝佳资料)
2015/01/26 PHP
php实现字符串首字母大写和单词首字母大写的方法
2015/03/14 PHP
浅析php设计模式之数据对象映射模式
2016/03/03 PHP
PHP水印类,支持添加图片、文字、填充颜色区域的实现
2017/02/04 PHP
[原创]提供复制本站内容时出现,该文章转自脚本之家等字样的js代码
2007/03/27 Javascript
不用写JS也能使用EXTJS视频演示
2008/12/29 Javascript
JQuery对class属性的操作实现按钮开关效果
2013/10/11 Javascript
JavaScript的setAttribute兼容性问题解决方法
2013/11/11 Javascript
node.js中的console.assert方法使用说明
2014/12/10 Javascript
JS实现点击按钮获取页面高度的方法
2015/11/02 Javascript
js+css简单实现网页换肤效果
2015/12/29 Javascript
jQuery Select下拉框操作小结(推荐)
2016/07/22 Javascript
js将字符串中的每一个单词的首字母变为大写其余均为小写
2017/01/05 Javascript
AngularJS的ng-click传参的方法
2017/06/19 Javascript
微信小程序页面滑动屏幕加载数据效果
2020/11/16 Javascript
vue组件学习教程
2017/09/09 Javascript
Vue的移动端多图上传插件vue-easy-uploader的示例代码
2017/11/27 Javascript
vue使用微信扫一扫功能的实现代码
2020/04/11 Javascript
python多重继承新算法C3介绍
2014/09/28 Python
Python处理RSS、ATOM模块FEEDPARSER介绍
2015/02/18 Python
python实现模拟按键,自动翻页看u17漫画
2015/03/17 Python
在Django中创建第一个静态视图
2015/07/15 Python
Windows中使用wxPython和py2exe开发Python的GUI程序的实例教程
2016/07/11 Python
python中常用的九种预处理方法分享
2016/09/11 Python
python读写json文件的简单实现
2017/04/11 Python
python3连接MySQL数据库实例详解
2018/05/24 Python
Python HTML解析模块HTMLParser用法分析【爬虫工具】
2019/04/05 Python
举例详解CSS3中的Transition
2015/07/15 HTML / CSS
创业计划书中包含的9个方面
2013/12/26 职场文书
装修致歉信
2014/01/15 职场文书
物理学专业自荐信
2014/06/11 职场文书
员工试用期自我评价
2014/09/18 职场文书
2014年药房工作总结
2014/11/22 职场文书
民事申诉状范本
2015/05/20 职场文书
详解PHP Swoole与TCP三次握手
2021/05/27 PHP