标签: zend-log

如何在ZF 1.8+应用程序的引导程序中注册Zend_Log?

所以我想开始登录我的Zend Framework应用程序.我想在我的引导程序中的某处注册记录器,以便我可以从任何控制器操作轻松访问它.我认为这应该是以前做过的简单事情,但我该怎么做呢?

文档显示了这样的内容,但是每次我想记录某些东西时我都不想创建一个新的Zend_Log:

$writer = new Zend_Log_Writer_Stream('/path/to/my/log/file');
$logger = new Zend_Log($writer);
$logger->log('Informational message', Zend_Log::INFO);
Run Code Online (Sandbox Code Playgroud)

这就是我提出的.感谢关于Zend_Registry的提醒!

// in /application/Bootstrap.php
protected function _initLogger()
{
    $writer = new Zend_Log_Writer_Stream('php://output');
    $logger = new Zend_Log($writer);
    Zend_Registry::set('logger', $logger);
}

// in controller actions
$logger = Zend_Registry::get('logger');
$logger->log('message');
Run Code Online (Sandbox Code Playgroud)

zend-framework zend-log

13
推荐指数
2
解决办法
8604
查看次数

有没有办法暂时禁用xdebug的var_dump?

我想使用Zend_Debug :: dump,在日志中保留一些变量,但由于我安装了xdebug,并且xdebug替换了php的var_dump,因此我在log中的值是xdebug生成的html值.

我想知道是否有一种方法在PHP中禁用此功能,并再次启用它,以便我可以将它们放在此行的上方和下方:

    $Message = Zend_Debug::dump($objects, null, false);
Run Code Online (Sandbox Code Playgroud)

zend-framework xdebug zend-log

12
推荐指数
2
解决办法
8276
查看次数

如何在ZF2中的ServiceManager中注册Zend\Log实例

我想知道通过ZF2中的ServiceManager启动和重用logger实例的最佳方法是什么.当然,我可以在任何类中使用一种简单的方法,例如:

public function getLogger () {
        $this->logger = new Logger();
        $this->logger->addWriter(new Writer\Stream('/log/cms_errors.log'));
        return $logger;
    }
Run Code Online (Sandbox Code Playgroud)

但我想知道在global.php中注册类似结构的最佳方法是什么.到目前为止,我可以

将以下内容添加到global.php中

'Zend\Log'=>array(
        'timestampFormat' => 'Y-m-d',
        array(
            'writerName'   => 'Stream',
            'writerParams' => array(
                'stream'   => '/log/zend.log',
            ),
            'formatterName' => 'Simple',            
        ),
    ),
Run Code Online (Sandbox Code Playgroud)

如果我尝试通过以下方式调用它:

$this->getServiceLocator()->get('Zend\Log')
Run Code Online (Sandbox Code Playgroud)

我得到一个:

Zend\ServiceManager\ServiceManager::get was unable to fetch or create an instance for Zend\Log
Run Code Online (Sandbox Code Playgroud)

zend-framework zend-log zend-framework2

7
推荐指数
2
解决办法
1万
查看次数

Zend Framework 2 - 应用程序/模块/服务经理 - 哦,我的

我刚开始学习Zend Framework 2作为Zend Framework 1的长期开发人员.围绕新术语缠绕我有点麻烦.

回到ZF1,如果我想创建一个对应用程序是全局的记录器,我会将配置添加到application.ini文件中,引导程序会将其初始化为资源(我希望我说的是正确的).那么从我的任何模块控制器,我可以通过bootstrap资源访问记录器.

输入ZF2,模块是一个有点不同的野兽,它们是自包含的,但我对它们如何与应用程序交互有点困惑.在我看来,这就是ServiceManager发挥作用的地方.我的目标是,让我的模块(不是控制器,而不是模块本身)检查应用程序是否定义了记录器,如果有,则在整个模块中使用该记录器.如果应用程序没有定义记录器,我希望模块为模块范围的日志记录定义记录器.

这个问题也与数据库有关,假设我想让应用程序定义数据库连接的逻辑,而我希望模块定义它所需的表的逻辑.我究竟如何配置它,以及如何在应用程序中定义数据库资源时如何/在何处判断.

注意:我已经浏览了Rob Allen的快速入门(相当充分的信息和我发现的唯一缺乏默默无闻的资源)和ZF2(readthedocs),并且已经用谷歌搜索过了.我发现的是,当涉及到某些拼图的"哪里"时,信息通常是非常模糊的.

zend-db zend-log zend-framework2

6
推荐指数
1
解决办法
1515
查看次数

Zend_Log的UML类图是否正确?

问题的背景

Zend_Log的分析揭示了以下类图

Zend_Log进行:

  • 使用ReflectionClass和Zend_Log_Exception
  • 维护对Zend_Log_Writer_Abstract数组的引用
  • 维护对Zend_Log_Filter_Interface数组的引用

Zend_Log_Writer_Abstract

  • 维护对Zend_Log_Filter_Interface数组的引用
  • 维护对Zend_Log_Formatter_Interface的引用

替代文字

问题

  1. Zend_Log_Filter_Interface与Zend_Log_Filter_Suppress,Zend_Log_Filter_Message和Zend_Log_Filter_Priority有关,如图所示,这是否在Class Diagram中正确布局?
  2. 可以这么说,Zend_Log包含对Zend_Log_Filter_Interface数组的引用,这是组合关系(类似于Zend_Log_Writer_Abstract)?
  3. 很明显,Zend_Log_Filter_Interface包含在Zend_Log和Zend_Log_Writer_Abstract中,而Zend_Log包含Zend_Log_Writer_Abstract,这使得Zend_Log_Filter被容器(Zend_Log)和包含(Zend_Log_Writer_Abstract)引用; 是一些"设计模式",如果是的话是什么名字?

问候!

uml zend-framework class-diagram class zend-log

5
推荐指数
1
解决办法
1098
查看次数

如何在"zend_log"中更改日期格式

如何更改Zend_Log的日期格式?

现在每个新日志条目前都有添加时间戳的日期:
"2013-01-28T16:47:54 + 01:00 ......某些日志消息..."

但我想格式化这个日期:
"Ymd H:我:s ...一些日志消息..."

我的代码看起来像这样:

class Game_Logger {

    public function __construct($val, $txt = null) {
        $writer = new Zend_Log_Writer_Stream(APPLICATION_PATH . '/../log/log.log');
        $logger = new Zend_Log($writer);
        if (is_array($val)) {
            $output = Zend_Debug::dump($val, null, false);
        } else {
            $output = $val;
        }
        if($txt){
            $output = $txt.' '.$output;
        }
        $logger->info($output);
    }

}
Run Code Online (Sandbox Code Playgroud)

php zend-log

4
推荐指数
1
解决办法
1195
查看次数

ZF2 Zend\Log + Doctrine2

我不知道如何使用Doctrine2配置Zend\Log.仅允许您通过连接适配器直接写入数据库或写入文件.

php zend-log doctrine-orm zend-framework2

4
推荐指数
1
解决办法
1639
查看次数

Zend Framework默认日志级别

是否可以为整个应用程序设置默认日志级别?我想从application.ini中设置它.我想设置记录器来登录数据库和firephp.

php zend-framework zend-log

3
推荐指数
1
解决办法
1505
查看次数

Zend Framework中Zend_Log的相对路径

我正在尝试找出配置Zend_Log_Writer_Stream实例的最佳方法,以写入相对于我的APPLICATION_PATH的文件名.

例如,使用以下配置:

resources.log.stream.writerName = "Stream"
resources.log.stream.writerParams.stream = "logs/production.log"
Run Code Online (Sandbox Code Playgroud)

初始化loggger的常规方法是使用应用程序引导资源或执行以下操作:

$logger = Zend_Log::factory($config->resources->log);
Run Code Online (Sandbox Code Playgroud)

这样做的问题是Zend_Log_Writer_Stream :: factory方法将尝试访问相对于当前脚本执行的文件,而不是APPLICATION_PATH.

因为几乎总是index.php里面/ public通常它不是戏剧性的,所以当我在我的单元测试目录中执行单个脚本时,它将使用该目录来建立路径.

理想情况下,我希望能够设置:

resources.log.stream.writerParams.stream = APPLICATION_PATH . "../logs/production.log"
Run Code Online (Sandbox Code Playgroud)

因此它总是使用可预测的位置.我宁愿不必破解Zend_Log继承类的工厂方法来使其工作.

我很想知道其他人是如何解决这个问题的.

bootstrapping zend-framework zend-log

2
推荐指数
1
解决办法
1253
查看次数

Zend_Log在application.ini中有多个编写器

我的配置中有一个记录器,如下所示:

resources.log.stream.writerName = "Stream"
resources.log.stream.writerParams.stream = APPLICATION_PATH "/../logs/err.log"
resources.log.stream.writerParams.mode = "a"
resources.log.stream.filterName = "Priority"
resources.log.stream.filterParams.priority = 3
Run Code Online (Sandbox Code Playgroud)

但我想将它用于错误日志.对于另一个日志想要使用另一个日志文件.出于这个原因,我将这些行添加到app.ini

resources.log.stream.writerName = "Stream"
resources.log.stream.writerParams.stream[] = APPLICATION_PATH "/../logs/debug.log"
resources.log.stream.writerParams.stream[] = APPLICATION_PATH "/../logs/info.log"
resources.log.stream.writerParams.mode = "a"
resources.log.stream.filterName = "Priority"
resources.log.stream.filterParams.priority[] = 7
resources.log.stream.filterParams.priority[] = 5
Run Code Online (Sandbox Code Playgroud)

但这不起作用我想使用differetn文件的不同优先级.但是记录器会覆盖第一个记录器.怎么样 ?

logging zend-framework zend-log

2
推荐指数
1
解决办法
4747
查看次数

如何使用Zend Log作为分离组件?

我想使用Zend Framwork的Log机制作为一个独立的组件,这意味着我想从ZF只需要Log,我该怎么做?

zend-framework zend-log

2
推荐指数
1
解决办法
1008
查看次数

Zend Framework - > Zend_Log通过application.ini => insert()对非对象错误

我试图通过application.ini文件进行日志记录,我遇到了错误.

resources.log.db.writerName = "Db"
resources.log.db.writerParams.db.adapter = "PDO_SQLITE"
resources.log.db.writerParams.db.dbname = ROOT "/data/tmp.db3"
resources.log.db.writerParams.db.table = "logs"
resources.log.db.writerParams.db.columnMap.priority = "priority"
resources.log.db.writerParams.db.columnMap.message  = "message"

Fatal error: Call to a member function insert() on a non-object in /var/www/libs/zend/library/Zend/Log/Writer/Db.php on line 137
Run Code Online (Sandbox Code Playgroud)

zend-framework zend-log

1
推荐指数
1
解决办法
3949
查看次数

在ZF2中记录每个请求

我们正在使用zend框架2用于新的应用程序,我想拥有相同的Rails或类似的日志系统,我希望每个请求都有一个日志,可以在Zend中执行此操作吗?

php logging zend-log zend-framework2

0
推荐指数
1
解决办法
1606
查看次数