我正在使用浏览器处理程序将消息记录到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
到重组数组内容的控制台中?
有没有办法将数据记录到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)
这样信息和错误日志将转到不同的日志文件.
谢谢您的帮助.
我有网络应用程序,用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)
除了每次发布后的日志,一切正常.我收到之前发送过的旧日志.例:
也许我错过了配置中的一些东西?
我在 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
,它工作正常。所以,我不认为这是一些许可问题。这背后的原因可能是什么?
我已将应用程序从 Symfony 3.4 迁移到 Symfony 4.4。
现在我对每个请求/ Sf 命令都有很多弃用(我无法修复这些弃用)。
如何从这个 Symfony 应用程序的日志中排除弃用?
我想在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设置,我将非常感激.谢谢!
我在我的应用程序中使用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。
我已经安装了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中如何设置发布者?
感谢任何形式的帮助。谢谢
内部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) 我当前的配置:
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 配置,如果可以,如何实现?
monolog ×10
php ×7
symfony ×4
laravel ×3
logging ×3
symfony4 ×2
capistrano ×1
graylog ×1
laravel-5 ×1
laravel-5.2 ×1
laravel-5.6 ×1
symfony-flex ×1
yaml ×1