标签: monolog

Monolog,如何将PHP数组记录到控制台?

我正在使用浏览器处理程序将消息记录到JS控制台中

require_once 'vendor/autoload.php';

use Monolog\Logger;
use Monolog\Handler\BrowserConsoleHandler;

$log = new Logger('name');
$log->pushHandler(new BrowserConsoleHandler);

$data = array(1,2,3,4);

// add records to the log
$log->addWarning('Foo');
Run Code Online (Sandbox Code Playgroud)

我想知道,是否可以将数组记录$data到重组数组内容的控制台中?

php monolog

7
推荐指数
2
解决办法
7839
查看次数

Laravel 5将数据记录到另一个文件中

有没有办法将数据记录到laravel 5中的另一个文件?不是标准的吗?例如,我想使用这样的东西:

Log::info("Some log data", '/path/to/custom/file.log');
Run Code Online (Sandbox Code Playgroud)

或者至少是否有可能根据日志类型划分日志文件.

Log::info("Some log data");
Log::error("Another log data");
Run Code Online (Sandbox Code Playgroud)

这样信息和错误日志将转到不同的日志文件.

谢谢您的帮助.

laravel monolog laravel-5 laravel-5.2

7
推荐指数
1
解决办法
3734
查看次数

发送旧日志的monolog

我有网络应用程序,用symfony-flex构建,用于部署我使用capistrano.为了记录关键日志,我已经以这种方式配置了monolog:

monolog:
    handlers:
        main:
            type: fingers_crossed
            action_level: error
            channels: ['!translation']
            excluded_http_codes: [{ 404: ['^/security/login'] }]
            handler: grouped
        grouped:
            type: group
            members: [deduplicated]
        deduplicated:
            type:    deduplication
            handler: swift
        swift:
            type:       swift_mailer
            from_email: '%mailer_user%'
            to_email:   ['email1@gmail.com', 'email2@gmail.com']
            subject:    " %%level_name%% %%level%%"
            level:      info
            formatter:  monolog.formatter.html
            content_type: text/html
Run Code Online (Sandbox Code Playgroud)

SwiftMailer配置:

swiftmailer:
    url: '%env(MAILER_URL)%'
    spool: { type: 'memory' }
Run Code Online (Sandbox Code Playgroud)

除了每次发布后的日志,一切正常.我收到之前发送过的旧日志.例:

截图

也许我错过了配置中的一些东西?

capistrano symfony monolog symfony-flex

7
推荐指数
1
解决办法
155
查看次数

Laravel 5.5 中未写入日志文件

我在 Laravel 5.5 上默认启用了日志记录。

设置是:

config/app.php文件中:

'log' => env('APP_LOG', 'single'),

'log_level' => env('APP_LOG_LEVEL', 'debug'),
Run Code Online (Sandbox Code Playgroud)

.env文件中:

APP_LOG_LEVEL=debug
Run Code Online (Sandbox Code Playgroud)

如果应用程序发生任何错误,我可以看到异常页面。但我不再在日志文件中看到它了。几个月前它运行良好。即使我尝试手动登录,它也不会记录。

Log::debug('Notification');
Run Code Online (Sandbox Code Playgroud)

我有使用创建文件的代码Storage,它工作正常。所以,我不认为这是一些许可问题。这背后的原因可能是什么?

php logging laravel monolog

7
推荐指数
1
解决办法
6605
查看次数

如何从 Symfony 4 的日志中排除弃用消息?

我已将应用程序从 Symfony 3.4 迁移到 Symfony 4.4。

现在我对每个请求/ Sf 命令都有很多弃用(我无法修复这些弃用)。

如何从这个 Symfony 应用程序的日志中排除弃用?

symfony monolog deprecation-warning symfony4

7
推荐指数
2
解决办法
2000
查看次数

yaml/symfony2:覆盖配置

我想在config_test.yml中覆盖config_dev.yml中的一些配置.所以,想象一下config_dev.yml中的以下部分:

monolog:
    handlers:
        main:
            type: stream
            path: %kernel.logs_dir%/%kernel.environment%.log
            level: debug
        firephp:
            type: firephp
            level: info
Run Code Online (Sandbox Code Playgroud)

在我的测试环境中,我根本不需要记录器.所以我试过了

monolog: ~
Run Code Online (Sandbox Code Playgroud)

没有效果.我也尝试过:

monolog:
    handlers:
        main: ~
        firephp: ~
Run Code Online (Sandbox Code Playgroud)

再没有任何影响.然后我测试了

monolog:
    handlers:
        main:
            type: ~
            path: ~
            level: ~
        firephp:
            type: ~
            level: ~
Run Code Online (Sandbox Code Playgroud)

我得到一个ErrorException Couldn't find constant Monolog\Logger::.如果有人能指出一种方法来覆盖monolog设置,我将非常感激.谢谢!

php yaml symfony monolog

6
推荐指数
1
解决办法
3496
查看次数

Laravel Log useFiles 方法正在将 Log 写入多个文件

我在我的应用程序中使用Laravel Log Facade。我有几个服务,如 Mandrill、Twilio、Stripe 等,需要记录在单独的文件中。但是当我使用 Log::useFiles() 为服务包装类之一设置单独的文件时,如下所示:

Class Mailer
{
    static function init()
    {
        Log::useFiles(storage_path('logs/mandrill-'.date("Y-m-d").'.log'));
    }

    static function send()
    {
        // some code here...

        Log::error("Email not sent");
    }
}
Run Code Online (Sandbox Code Playgroud)

我最终将日志写入 Laravel 日志文件和 Mandrill 日志文件中。

有没有办法告诉Log只将日志写入一个文件?

它这样做通常很奇怪,因为当我直接使用Monolog时,它只写入一个文件,正如它应该的那样。据我所知 Log Facade 使用的是 Monolog。

php logging laravel monolog laravel-facade

6
推荐指数
1
解决办法
5897
查看次数

使用 monolog 将日志从 php 应用程序发送到graylog

我已经安装了graylog服务器及其依赖项。尝试使用Monolog将日志从我的php应用程序发送到graylog服务器。但我不知道如何使用 Gelf 处理程序。我已经看到了 Monolog 项目中存在的 GelfHandlerTest.php,但我无法设置我的发布者并创建处理程序。请任何人用示例代码向我解释一下如何使用它。

尝试将日志从我的本地主机 apache 发送到在安装 Graylog 的同一专用网络中设置的服务器。

在 PHP 中执行的 testLogging 文件是,

use Monolog\Logger;
use Monolog\Handler\StreamHandler;
use Monolog\Handler\GelfHandler;
use Gelf\Message;
use Monolog\Formatter\GelfMessageFormatter;


$handler = new GelfHandler($publisher);
Run Code Online (Sandbox Code Playgroud)

monolog中如何设置发布者?

感谢任何形式的帮助。谢谢

php logging monolog graylog

6
推荐指数
1
解决办法
9674
查看次数

尝试创建自定义日志通道Laravel 5.6

内部config/logging.php:

'channels' => [
        'stack' => [
            'driver' => 'stack',
            'channels' => ['single', 'mongo'],
        ],

        'mongo' => [
            'driver' => 'monolog',
            'handler' => \Monolog\Handler\MongoDBHandler::class,
            'handler_with' => [
                'mongo' => new MongoDB\Client(),
                'database' => 'logs',
                'collection' => 'test'
            ]
        ]
    ],
Run Code Online (Sandbox Code Playgroud)

.env: LOG_CHANNEL=stack

我确信MongoDB数据库也logs存在,test收集也是如此.

我正在尝试记录内部的一些数据php artisan tinker:

Log::info('test');
Run Code Online (Sandbox Code Playgroud)

我有例外

期望$文档有类型"数组或对象"但找到"字符串"

即使我尝试php artisan config:cache我得到这个例外.

有什么不对?


更新: 'mongo' => MongoDB\Client::class,导致相同的错误.顺便说一句,文档中没有任何关于在类中传递类实例的文章handler_with.

这个配置

'mongo' => [
            'driver' => 'monolog', …
Run Code Online (Sandbox Code Playgroud)

php monolog laravel-5.6

6
推荐指数
1
解决办法
1361
查看次数

从 Symfony 日志记录中排除基于通道和级别的日志条目

我当前的配置:

monolog:
    handlers:
        target_main:
            type:         fingers_crossed
            action_level: debug
            handler: file_log
            channels: ['!security' '!request']
        file_log:
            type: rotating_file
            path: "%kernel.logs_dir%/%kernel.environment%.log"
            level: debug
            max_files: 2
Run Code Online (Sandbox Code Playgroud)

现在请求通道已完全排除在 file_log 处理程序之外。我需要仅从通道请求中排除 action_level - 调试,而不是完全请求通道。是否可以使用 symfony monolog 配置,如果可以,如何实现?

php symfony monolog symfony4

6
推荐指数
0
解决办法
669
查看次数