11

如果是这样,怎么办?默认情况下,L4 写入文本文件。我注意到 Monolog 可以在其github页面上登录到数据库。

4

5 回答 5

10

是的,您可以创建一个侦听器来记录 routes.php 中的所有内容

Event::listen('laravel.log', function($type,$message)
{
    $log = new Log();
    $log->message = $message;
    $log->type = $type;
    $log->update;
});

或者,如果您只想记录错误 400 和 500,Larvavel 在 Routes.php 文件中有一个 Log 事件可以侦听错误 404 和 500,您可以在此事件侦听器中编写自己的代码。因此,假设您定义了一个名为 Log 的模型,

Event::listen('404', function()
{
    $error = "404: " . URL::full();
    Log::error($error);
    $update = new Log();
    $update->error = $error;
    $update->update;
    return Response::error('404');
});

Event::listen('500', function()
{
    Log::error($error);
    $update = new Log();
    $update->error = $error;
    $update->update;
    return Response::error('500');
});
于 2013-03-25T10:34:11.510 回答
7

如您进一步阅读标题所见,Monolog 原生支持写入 Redis、MongoDB 和 CouchDB。这三个都支持相当大量的写入(在 Redis 的情况下非常写入)用例。MySQL 不存在,因为记录到 MySQL 并不是世界上最好的主意。

如果您真的想这样做,您可以查看有关创建自己的处理程序的文档,其中解释了如何创建和使用 PDO 处理程序写入 SQL 数据库:https ://github.com/Seldaek/monolog/blob /master/doc/extending.md - 我仍然认为这是一个坏主意,但也许用例需要它。

于 2013-03-24T11:32:34.033 回答
2

由于我在项目中有同样的需求,我为 Monolog 创建了一个处理程序,用于将日志输出写入 MySQL。它是在 MIT 许可下发布的,可以通过composer或直接在GitHub 上获得。可能值得一试。

于 2015-02-17T09:59:40.490 回答
0

在 laravel 5 现在是illuminate.log

现在它会像

Event::listen('illuminate.log', function($type,$message)
{
    ....
});
于 2017-02-03T11:29:18.690 回答
0

对于那些想知道如何使用 5.6 到 7.x 的 laravel/lumen 的人

  1. 作曲家需要 wazaari/monolog-mysql
  2. 编辑文件 config/logging.php 如下
<?php

use MySQLHandler\MySQLHandler;

...

    'channels' => [
        'stack' => [
            'driver'   => 'stack',
            'channels' => ['daily', 'mysql'],
        ],
        ...

        'mysql' => [
            'driver' => 'monolog',
            'level' => 'debug',
            'handler' => MySQLHandler::class,
            'with' => [
                'pdo' => app('db')->connection()->getPdo(),
                'table' => 'table-name',
            ],
        ]
于 2020-05-12T09:20:59.177 回答