通常你只是获得logger
服务,日志转到:
%kernel.root_dir%/%kernel.environment%.log
Run Code Online (Sandbox Code Playgroud)
我想记录的消息形成SOAP服务ONLY到:
%kernel.root_dir%/%kernel.environment%.soap.log
Run Code Online (Sandbox Code Playgroud)
不是主日志文件.
我已经阅读了这本食谱,但我不明白如何配置monolog.
任何帮助,线索?
如何为logging INFO
in 指定单独的文件Laravel 5.1
?
任何直接的帮助都将非常值得注意.谢谢
我在我的应用程序中使用Monolog作为独立库,最近我遇到了一个问题.让我们说,在我的应用程序的某个时刻,我捕获一个异常,我想记录它:
$mylogger->error('Exception caught', array('exception' => $exception));
Run Code Online (Sandbox Code Playgroud)
除了一件小事之外,它的工作方式非常完美 - 它不记录整个堆栈跟踪.是否可以使用monolog内置格式化程序记录异常的完整堆栈跟踪?
我想知道是否有可能在Symfony2中配置Monolog以每天创建一个新的日志文件,例如:2013-11-21-prod.log.
我刚切换到monolog并想将我的消息记录到PHP控制台而不是文件.对于某些人来说这似乎是显而易见的,但我花了一点时间才弄清楚如何做到这一点,我在SO上找不到类似的问题/答案.
Monolog的Github自述文件中的示例仅显示如何使用文件:
<?php
use Monolog\Logger;
use Monolog\Handler\StreamHandler;
// create a log channel
$log = new Logger('name');
$log->pushHandler(new StreamHandler('path/to/your.log', Logger::WARNING)); // <<< uses a file
// add records to the log
$log->addWarning('Foo');
$log->addError('Bar');
Run Code Online (Sandbox Code Playgroud)
但它没有说明如何将消息记录到控制台.在谷歌上搜索之后,我登陆了Symphony的帮助页面,或者是寻找登录浏览器控制台的人的问题.
// in my PHP code
$log = new Logger('LaurentCommand');
$log->pushHandler(new StreamHandler('./app/logs/LaurentCommand.log'));
$log->addInfo("Start command",array('username' => 'Joe', 'Age' => '28'));
Run Code Online (Sandbox Code Playgroud)
结果在日志文件LaurentCommand.log中:
[2012-12-20 10:28:11] LaurentCommand.INFO:开始命令{"username":"Joe","Age":"28"} []
为什么这个支架到底?
我想将自定义处理程序添加到Symfony 2中的默认monolog .
在我的config.yaml
档案中,我有:
monolog:
handlers:
main:
type: stream
path: %kernel.logs_dir%/%kernel.environment%.log
level: debug
myHandler:
type: Acme\MyBundle\Monolog\MyCustomHandler
level: error
Run Code Online (Sandbox Code Playgroud)
我的课程如下:
// Acme\MyBundle\Monolog\MyCustomHandler
use Monolog\Logger;
use Monolog\Handler\SocketHandler;
use Monolog\Formatter\LineFormatter;
class MyCustomHandler extends AbstractProcessingHandler
{
...
}
Run Code Online (Sandbox Code Playgroud)
但即使在我填写课程之前,我也会收到错误:
为处理程序"myHandler"指定的无效处理程序类型"acme\mybundle\monolog\mycustomhandler"
如何在不创建新的monolog服务的情况下将自定义处理程序添加到默认monolog?
在发布我的问题之前我搜索了很多.我没有找到明确的答案,所以在这里.
我想将消息作为dev.log或prod.log记录在不同的日志文件中.我的意思是一个不会被Symfony核心消息篡改的文件.我听说过monolog中的记录器和处理程序,但不是很清楚.
如何将来自控制器,模型的消息记录到特定的日志文件?
我试图在symfony中使用monolog记录一个数组.
$logger = $this->get('logger');
$logger->info(=print_R($user,true));
Run Code Online (Sandbox Code Playgroud)
我得到的输出没有格式化为print_r.它将所有内容记录在一行上.
我的config.yml中没有任何monolog设置,并怀疑这可能是问题所在.
如何使用monolog记录print_r(数组),以便显示格式为tail -f?
我正在使用Laravel 5.1并尝试为开发和生产环境设置不同的日志记录逻辑.
在我的整个应用程序中,我使用了Log
大多数以下不同方法的外观:
Log::emergency($error);
Log::alert($error);
Log::critical($error);
Log::error($error);
Log::warning($error);
Log::notice($error);
Log::info($error);
Log::debug($error);
Run Code Online (Sandbox Code Playgroud)
然而,在我的生产环境,我想只记录任何是Error
,Critical
,Alert
或Emergency
优先级和无视登录请求优先级较低.
我在文档中找不到任何东西,或者通过探索代码(Log
外观和Monolog
类).
我目前的想法是在Log外观周围创建一个自定义包装器,它只是检查环境并忽略400以下的任何内容(Monolog级别为Error).基本上我会在环境文件中创建一个阈值变量,其下面的任何内容都不会记录到文件中.
在我这样做之前,我想询问社区是否存在我可以使用的现有方法/配置,以便我不重新发明轮子.
如果不是 - 最好的方法是什么?