2012-02-06 44 views
2

我是PHP新手,我有一个非常基本的问题。我想在我的项目的所有PHP文件中设置PEAR日志记录。我如何实现这一目标?现在,在每一个单一的文件中有以下几行:如何设置包含目录的所有PHP脚本?

// Repeated lines 
require_once 'Log.php'; 
$conf = array('mode' => 0600, 'timeFormat' => '%X %x'); 
$logger = Log::singleton('file', 'out.log', 'ident', $conf); 

// Some logging... 
$logger->log("Log entry"); 

重复3行似乎不是正确的解决方案。我实际上和我的Propel生成的类有相同的问题。我该如何解决这个问题?

马丁

回答

3

我会使用一个全球包括文件,做所有你需要在每个页面上做一般的东西。例如,如果你想要来实例记录器,连接到数据库,并执行与用户的$_SESSION东西在每个页面上,你可以创建一个全球包括:

在/includes/global.php

require_once 'Log.php'; 
$conf = array('mode' => 0600, 'timeFormat' => '%X %x'); 
$logger = Log::singleton('file', 'out.log', 'ident', $conf); 

// Connect to DB 

// Do $_SESSION stuff 
在/any/other/file.php

require_once('/includes/global.php'); 

// $logger is already defined: 
$logger->log("Log entry"); 

如果你需要登录一个函数内部

,你可以抓住你单身的副本,或者使用global关键字:

function test($a) 
{ 
    global $logger; 
    $logger->log('test() - ' . $a); 
} 

编辑:最后,你可以使用php.ini directiveauto_prepend_file规定与在主文件之前自动解析的文件名。

0

将三条线移动到一个单独的文件和require_once那一个。

文件 “MyLog.php”:

require_once 'Log.php'; 
$conf = array('mode' => 0600, 'timeFormat' => '%X %x'); 
$logger = Log::singleton('file', 'out.log', 'ident', $conf); 

其他文件:

require_once 'MyLog.php'; 
$logger->log("Log entry"); 
相关问题