流明每日日志
Posted
技术标签:
【中文标题】流明每日日志【英文标题】:Lumen Daily Logs 【发布时间】:2015-11-26 02:38:31 【问题描述】:我想在我的 Lumen 项目中添加一个每日日志。
我在 app.php (Folder Bootstrap/) 中试试这个
$logFile = 'laravel.log';
Log::useDailyFiles(storage_path().'/logs/'.$logFile);
但这让我犯了那个错误
调用未定义的方法 Monolog\logger::useDailyFiles()
感谢任何帮助...谢谢
【问题讨论】:
Lumen 没有带有该方法的Writer
包装类。您需要获取 Monolog 实例,弹出默认处理程序,然后添加您自己的 RotatingFileHandler
。至少我会这样做。
【参考方案1】:
如果您查看框架源代码here,您会发现它不会做日常日志,而是写入单个日志文件lumen.log
。有一个可用的公共方法configureMonologUsing
看到here 并引用了here,您可以使用它来覆盖默认行为而无需扩展应用程序。
Lumen 只是将处理程序设置为独白,所以另一个好的解决方案是您可以这样做:
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Monolog\Formatter\LineFormatter;
use Monolog\Handler\RotatingFileHandler;
class LogServiceProvider extends ServiceProvider
/**
* Configure logging on boot.
*
* @return void
*/
public function boot()
$maxFiles = 5;
$handlers[] = (new RotatingFileHandler(storage_path("logs/lumen.log"), $maxFiles))
->setFormatter(new LineFormatter(null, null, true, true));
$this->app['log']->setHandlers($handlers);
/**
* Register the log service.
*
* @return void
*/
public function register()
// Log binding already registered in vendor/laravel/lumen-framework/src/Application.php.
然后不要忘记将服务提供者添加到您的 Lumen bootstrap/app.php 中:
$app->register(\App\Providers\LogServiceProvider::class);
【讨论】:
我们可以创建自定义日志文件吗? @Sreenath 你是什么意思?你能更具体/提供更多细节吗? 我想通过每个用户的唯一 ID 创建日志文件。 啊。唔。您需要制作自己的自定义处理程序,然后用它替换上面的代码$handlers[] = ...
。您可以复制RotatingFileHandler 并调整方法以满足您的需要,从当前用户处读取以创建文件名。您可能需要在处理程序中传递对应用程序的引用,或者查看会话或其他内容以获取用户。
感谢您的信息。【参考方案2】:
在 Lumen 5.6 中,更好的方法是将 .env 中的默认设置配置为 LOG_CHANNEL=daily
默认设置为LOG_CHANNEL=stack
,使用单个文件进行日志记录。
【讨论】:
【参考方案3】:从 5.6 版本开始,配置日志系统变得更加容易:
-
如果项目不存在,请在项目中创建目录配置
从 vendor/laravel/lumen-framework/config/logging.php 到你的项目配置目录
编辑文件 config/logging.php 并根据自己的喜好调整频道属性。
'channels' => [
'stack' => [
'driver' => 'stack',
'channels' => ['daily'],
],
【讨论】:
以上是关于流明每日日志的主要内容,如果未能解决你的问题,请参考以下文章