我认为默认情况下,Log :: info调用不会登录生产,但它们仍然会进入。
我使用.env文件设置制作
APP_ENV=production
APP_DEBUG=false
我也试过这些命令,但没有运气
composer dump-autoload
php artisan cache:clear
php artisan optimize
我错过了什么吗?
答案 0 :(得分:2)
嗯,我认为现在搜索所有Log::info()
已经太晚了,并且@jon__o做了建议的回答
if (App::environment('local', 'staging')) {
Log::info($error);
}
但你仍然可以做点什么。您可以使用自己的实现覆盖默认的Laravel记录器实例。
转到ApplicationServiceProvider
并使用自定义实例覆盖log
实例:
/**
* Register any application services.
*
* @return void
*/
public function register()
{
$this->registerLogger();
}
/**
* Register the logger instance in the container.
*
* @return MyCustomWriter
*/
protected function registerLogger()
{
$this->app->instance('log', $log = new MyCustomWriter(
new Monolog($this->app->environment()), $app['events'])
);
$log->dontLogInfoOnEnvironmnets(['production', 'staging', 'other']);
return $log;
}
现在,您只需扩展Laravel Writer
并覆盖info()
方法即可创建自定义编写器。
class MyCustomWriter extends \Illuminate\Log\Writer
{
protected $dontInfoOn = [];
/**
* Log an informational message to the logs.
*
* @param string $message
* @param array $context
* @return void
*/
public function info($message, array $context = [])
{
// Since we are providing the app environment to the Monolog instance in out ApplicationServiceProvider
// we can get the environment from the Monolog getName() method
if(!in_array($this->monolog->getName(), $this->dontInfoOn)) {
return parent::info($message, $context);
}
}
/**
* Don't log info() on the supplied environments .
*
* @param array $environments
* @return void
*/
public function dontLogInfoOnEnvironmnets(array $environments)
{
$this->dontInfoOn = $environments;
}
}
这样,您仍然可以在测试环境中保留Log::info
,而无需每次都进行检查。
答案 1 :(得分:0)
当您的应用程序未处于调试模式时,仅会禁止显示错误。 Log :: info()函数将在调用时始终记录。
简单的解决方案是让你将Log :: info()函数包装成这样的东西:
if (App::environment('local', 'staging')) {
Log::info($error);
}
请确保在文件顶部包含应用程序外观use App;
。或者,您可以使用app()帮助程序来获取环境:$environment = app()->environment();
。
答案 2 :(得分:0)
对于仍在发现此线程的人(8年后):
在config / logging.php文件中配置日志通道
将日志通道的“级别”参数设置为.env变量
示例:
'channels' => [
'slack' => [
'driver' => 'slack',
'url' => env('LOG_SLACK_WEBHOOK_URL'),
'username' => 'Lumen Log',
'emoji' => ':boom:',
'level' => env('LOG_LEVEL', 'error'),
]
]
现在,您可以在.env文件中为每种环境设置LOG_LEVEL变量