log4php将无法正常工作

时间:2010-10-19 02:35:54

标签: php log4php

所以我最近发现log4 *包可用于PHP,并且看到这个热切地从log4php网站下载了最新版本并按照安装说明进行操作。说明指示一个是下载tar包,解压缩,并将以下目录放在一个选择的位置:log4php / src / main / php

因此我将log4php/src/main/php的内容复制到lib / log4php下的lib目录中。

在我的脚本中,根据需要,我需要“Logger.php”类并指示一个属性文件来管理我的appender。属性文件log4php.properties位于我的文件系统“/home1/ioforgec/www/devlab/pnotes/config/log4php.properties”。

这是日志文件内容:

#
# Example Logger
#
log4php.appender.EA1 = LoggerAppenderConsole
log4php.appender.EA1.target = STDOUT
log4php.appender.EA1.layout = LoggerLayoutPattern
log4php.appender.EA1.ConversionPattern = "%m"
log4php.appender.EA1.threshold = FATAL
log4php.exampleLogger = FATAL, EA1

所以这是我的脚本的副本实现(或多或少'包装'log4php功能):

<?php

require_once('/home1/ioforgec/www/devlab/pnotes/lib/log4php/Logger.php');

class LogUtil
{
    public $logger;

    public $properties_file = "/home1/ioforgec/www/devlab/pnotes/config/log4php.properties";

    public static function logExample($msg)
    {
        Logger::configure($properties_file);
        $logger = Logger::getLogger("example");
        $logger->debug("Shouldnt see this print because of config max level FATAL");
        $logger->fatal($msg);
    }
}
?>

为了测试这是否正常,以下脚本调用上面显示的LogUtil.php:

#!/usr/bin/php
<?php
require_once("lib/utils/LogUtil.php");
LogUtil::logExample("example message");
?>

因此,尽管配置示例记录器将消息格式化为普通消息,但尽管将记录器的级别设置为最大FATAL,不仅在记录器声明中而且在阈值命令中,打印到控制台看起来像默认的根记录器:

Mon Oct 18 20:30:05 2010,705 [827] DEBUG example - Shouldnt see this print because of config max level FATAL
Mon Oct 18 20:30:05 2010,711 [827] FATAL example - example message

我看到没有指定的普通格式的print语句,我看到两个打印语句,调试打印(由于在记录器配置中设置了FATAL,它应该永远不会打印 - FATAL比DEBUG高很多)< / p>

我到底在做什么?我已经尝试了我可能想到的每种设置组合。有没有人有任何建议?

编辑 - 更新 - 这仍然是一个问题。没有进展。

Edit2 - 真的吗?这个论坛上没有人试图使用这个非常流行的日志包及其作为PHP模块的化身吗?

我已经尝试了所有可以想象的途径来尝试并回答我的问题,包括log4php用户的邮件列表。

1 个答案:

答案 0 :(得分:3)

经过许多小时的操作配置文件后,我发现了一个小而重要的事实。为了指定“记录器”,您必须在“记录器”层次结构下将其命名为“appender”层次结构等下的appender等。例如:

# for the 'console' logger named 'example' we first define the appender:
log4php.appender.consoleAppender = LoggerAppenderConsole
log4php.appender.consoleAppender.target = STDOUT
log4php.appender.consoleAppender.layout = LoggerLayoutSimple

# we then assign the appender and the minimum log level to the logger:
log4php.logger.example = WARN, consoleAppender

我的错误是看到根记录器层次结构名称'log4php.rootLogger'并假设为了分配记录器,只需为'log4php.lognameLogger'命名一个值。遗憾的是,这不是借口,因为文档中有一个埋藏的例子。我想在9个小时以上找到它总比完全没有好。)

感谢那些提醒我有更多调试工作要做的人,感谢提醒我们继续尝试