3

我正在使用 Silex 1.1 和 Monolog 1.0.0。我的代码和我的问题:

$app->register(new Silex\Provider\MonologServiceProvider(), array(
  'monolog.name' => 'myname',
  'monolog.logfile' => ROOT . '/logs/log.txt',
  'monolog.level'   => Monolog\Logger::INFO
));

. . .
$app['monolog']->addInfo('xxx');

一切正常,但我收到如下默认消息:

[2013-12-13 00:20:56] myname.INFO: Matched route "GET_api_v1_predictions" (parameters: "_controller": "predictions.controller:index", "_route": "GET_api_v1_predictions") [] []
[2013-12-13 00:20:56] myname.INFO: > GET /api/v1/predictions [] []

我怎样才能禁用它们?(如果我将日志级别更改为 WARNING 并使用 addWarning 则只显示我的消息,但我想使用 INFO 级别)。

4

2 回答 2

6

您仍然可以为您的应用程序创建一个未被其他进程使用的记录器:

use Monolog\Logger;
use Monolog\Handler\StreamHandler;

// initialize the logger
$app['mylog'] = $app->share(function($app) {
   return new Logger('mylog');
});
$app['mylog']->pushHandler(new StreamHandler('/logfile/mylog.log', Logger::INFO));
$app['mylog']->addInfo('Private Log initialized');
于 2013-12-13T11:18:32.260 回答
1

目前没有办法禁用它们,日志命令是无条件注册的。

短期的解决方案是将 MonologServiceProvider 复制到您自己的应用程序中,根据需要更改日志命令。

长期的解决方案是分叉 silex 存储库,更改 MonologServiceProvider 以提供禁用这些命令的方法,然后创建拉取请求,以便每个人都可以享受您的工作。

于 2013-12-13T09:47:59.617 回答