首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >log4php将无法正常工作

log4php将无法正常工作
EN

Stack Overflow用户
提问于 2010-10-19 10:35:54
回答 1查看 3.4K关注 0票数 1

所以我最近发现log4*包可用于PHP,在看到这个包后,我迫不及待地从log4php网站下载了最新版本,并按照安装说明进行了操作。根据说明,您需要下载tar包untar,并将以下目录放置在您选择的位置: log4php/src/main/php

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

在我的脚本中,根据需要,我需要'Logger.php‘类,并指定了一个属性文件来管理我的附加器。属性文件"/home1/ioforgec/www/devlab/pnotes/config/log4php.properties".位于我的文件系统上,即log4php.properties

日志文件内容如下:

代码语言:javascript
复制
#
# 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功能):

代码语言:javascript
复制
<?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:

代码语言:javascript
复制
#!/usr/bin/php
<?php
require_once("lib/utils/LogUtil.php");
LogUtil::logExample("example message");
?>

因此,尽管将示例记录器配置为将消息格式化为普通消息,无论是在记录器声明中还是在阈值命令中,无论是在记录器声明中还是在阈值命令中,都将记录器的级别设置为最大致命级别,但在我看来,打印到控制台就像是默认的根记录器:

代码语言:javascript
复制
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语句没有指定的普通格式,并且我看到了两个print语句,debug print (由于记录器config - than上的FATAL设置比DEBUG高得多,所以不应该打印出来)

我到底做错了什么?我已经尝试了我能想到的所有设置组合。有人有什么建议吗?

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

Edit2 -真的吗?这个论坛上有没有人尝试过使用这个非常流行的日志包并将其化为PHP模块?

我已经尝试了所有可能的途径来尝试得到我的问题的答案,包括log4php用户的邮件列表。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-10-20 13:36:14

在对配置文件进行了许多小时的操作之后,我发现了一个很小但非常重要的事实。为了指定一个'logger‘,你必须在'logger’层次结构下给它命名,在'appender‘层次结构下给它命名,等等。例如:

代码语言:javascript
复制
# 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+小时内找到它总比根本找不到要好:)

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

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

https://stackoverflow.com/questions/3964944

复制
相关文章

相似问题

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