首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Laravel 4日志::loop混淆了for循环

Laravel 4日志::loop混淆了for循环
EN

Stack Overflow用户
提问于 2015-04-15 08:57:08
回答 1查看 681关注 0票数 0

首先,我为这个复杂的标题感到抱歉,但是我找不到其他合适的标题来表示错误。

我用Laravel 4做我的项目。

我的global.php文件中有一个global.php

代码语言:javascript
运行
复制
Log::listen(function($level, $message, $context){
    switch($level){
        case 'info':
            Log::useFiles(storage_path().'/logs/laravel.info.log');
            break;

        case 'error':
            Log::useFiles(storage_path().'/logs/laravel.error.log');
            break;
    }
});

当我运行这段代码时

代码语言:javascript
运行
复制
for($i = 1; $i <= 5; $i++){
    Log::info($i);
}

它的输出是

代码语言:javascript
运行
复制
[2015-04-15 11:54:07] production.INFO: 1 [] []
[2015-04-15 11:54:07] production.INFO: 2 [] []
[2015-04-15 11:54:07] production.INFO: 2 [] []
[2015-04-15 11:54:07] production.INFO: 3 [] []
[2015-04-15 11:54:07] production.INFO: 3 [] []
[2015-04-15 11:54:07] production.INFO: 3 [] []
[2015-04-15 11:54:07] production.INFO: 4 [] []
[2015-04-15 11:54:07] production.INFO: 4 [] []
[2015-04-15 11:54:07] production.INFO: 4 [] []
[2015-04-15 11:54:07] production.INFO: 4 [] []
[2015-04-15 11:54:07] production.INFO: 5 [] []
[2015-04-15 11:54:07] production.INFO: 5 [] []
[2015-04-15 11:54:07] production.INFO: 5 [] []
[2015-04-15 11:54:07] production.INFO: 5 [] []
[2015-04-15 11:54:07] production.INFO: 5 [] []

我发现,当我移除Log::listen并简单地添加Log::useFiles(storage_path().'/logs/laravel.log');时,问题就解决了。

我必须使用侦听器和for循环。

任何帮助都是非常感谢的。

提前谢谢你。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-15 12:47:36

问题是,每个Log::userFiles()调用都向堆栈添加了一个新的处理程序。如果您有2、3、4个处理程序,那么相同的消息将被写入2、3、4次。

我不确定这是否是一个好方法,但它应该有效:

(事实上,我几乎肯定会有更好的方法,但我无法马上找到)

代码语言:javascript
运行
复制
Log::listen(function($level, $message, $context){
    $monolog = Log::getMonolog();
    // clear all existing log handlers
    for($i=0; $i<count($monolog->getHandlers()); $i++){
        $monolog->popHandler();
    }
    Log::useFiles(storage_path().'/logs/laravel.' . $level . '.log');
});

如您所见,通过直接使用文件名中的级别,我还使开关大小写过时了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29645864

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档