我想保存所有的回报" Command"文件在日志文件中
<?php
namespace LogicielBundle\Command\Cron;
use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
class MailRapportDometechCommand extends ContainerAwareCommand
{
protected function configure()
{
$this
->setName('logiciel:mail_rapport_preparation_dometech')
;
}
protected function execute(InputInterface $input, OutputInterface $output)
{
$output->writeln('. <bg=black;fg=white>Log color ...</>');
$logFile = fopen('app/CommandLogs/MailRapportDometech/compteur.txt', 'w+');
fputs($logFile, 'Test ... how to have $output data ?');
fclose($logFile);
}
}
如果可能的话,如果有:)给我发电子邮件错误:) 谢谢:))
答案 0 :(得分:2)
您必须使用$this->getContainer()->get('logger')->error('your message');
服务,而不是直接写入文件。仅仅为了这些动作,Monolog捆绑包被集成到Symfony的核心。
例如:
app/config/config.yml
在您的monolog:
handlers:
applog:
type: stream
path: /path/to/your/file.log
level: error
,您可以自定义每个级别的处理程序。
x_j \in {1,2,3} for j \in {1,2,3}
b_i_j \in {0,1} for i,j \in {1,2,3}
\sum_{i=1}^{3} i * b_i_j = x_j for j \in {1,2,3}
\sum_{i=1}^{3} b_i_j = 1 for j \in {1,2,3}
在文档中,您可以找到如何创建电子邮件处理程序。
答案 1 :(得分:0)
我也遇到过同样的问题,所以我这样解决了它:
尝试为特定的日志记录通道创建处理程序,以将日志存储在不同的文件中。在这里,我以security
频道为例。
/!\您的Command类必须扩展 ContainerAwareCommand ,以便使用$this->getContainer()
来获取此参数kernel.logs_dir
。结果是
这行$this->getContainer()->getParameter('kernel.logs_dir')
将为您提供日志目录的路径。
use Monolog\Logger;
use Monolog\Handler\StreamHandler;
class CheckCommand extends ContainerAwareCommand
{
protected function execute(InputInterface $input, OutputInterface $output)
{
// create a log channel
$log = new Logger('security');
$log->pushHandler(new StreamHandler($this->getContainer()->getParameter('kernel.logs_dir').'/file.log', Logger::DEBUG));
$log->addWarning('Foo');
$log->addError('Bar');
}
您的日志文件将存储在 / var / www / html / project-name / var / logs