【问题标题】:log php errors on console using log4php but it display on browser as well使用 log4php 在控制台上记录 php 错误,但它也显示在浏览器上
【发布时间】:2020-05-08 16:53:28
【问题描述】:

我使用 log4php 库日志错误仅用于控制台(标准输出)。但是当我在浏览器上运行我的代码时,它会在浏览器上输出,这是我不希望发生的。

我已经推荐并尝试过 logs php error but not display it in browser,但这些答案都没有为我解决我的代码很简单。

<?php
error_reporting(E_ERROR | E_PARSE);
error_reporting(0);ini_set('display_errors', 'Off');
require_once("log4php/Logger.php");
$logger = Logger::getLogger("main");
$logger->info("This is an informational message.");
$logger->warn("I'm not feeling so good...");

配置文件:

<configuration xmlns="http://logging.apache.org/log4php/">
<appender name="default" class="LoggerAppenderConsole">
    <layout class="LoggerLayoutSimple" />
</appender>
<root>
    <appender_ref ref="default" />
</root>

这会在浏览器上输出,

INFO - 这是一条信息性消息。警告 - 我感觉不太好......

我希望它只在标准输出上。在这种情况下,如果我对 stodut 的理解有误,请告诉我

回答后编辑我的工作代码:

<?php
require_once("log4php/Logger.php");
Logger::configure("log4php/config.xml");
$logger = Logger::getLogger("default");
$logger->info("This is an informational message.");
$logger->warn("I'm not feeling so good...");

【问题讨论】:

  • 请出示您的配置文件好吗?
  • 包含的配置文件
  • 您可能需要检查是否the script is being run via browser or console 并且仅在它是cli 时运行记录器。如果脚本通过浏览器运行,stdout 是浏览器,而不是系统。

标签: php log4php


【解决方案1】:

我认为你没有以正确的方式调用文件!或缺少 xml 文件

require_once('/path/to/log4php.xml');

所以应该是这样的

error_reporting(E_ERROR | E_WARNING | E_PARSE);
error_reporting(0);
ini_set('display_errors', 'Off');
require_once('/path/to/log4php/Logger.php');
//xml file here
$logger = Logger::getLogger(basename(__FILE__));
$logger->info('This is an informational message');
$logger->warn("I'm not feeling so good...");

看到这个问题就好了:log4php : Cannot create log file

【讨论】:

  • 谢谢 :) 我还发现我的 appender 有问题,我修复了。我将包含更新的代码。
  • 我很高兴你解决了!让我翻译我不懂,不是英语:)
  • 一个小疑问,要验证它是否在控制台中运行。我试过“php filename.php”它显示警告消息。虽然“curl url_path_to_file”没有显示任何内容。我验证对了吗
  • 是的!这是正确的方式!如果需要更多信息,您可以在这里查看:svn.apache.org/repos/asf/logging/log4php/trunk/src/main/php
【解决方案2】:

试试

ini_set('display_errors',0);

或在 php.ini 文件中设置该指令

https://www.php.net/manual/en/errorfunc.configuration.php#ini.display-errors

在它说的文档中 Although display_errors may be set at runtime (with ini_set()), it won't have any effect if the script has fatal errors. This is because the desired runtime action does not get executed.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 2019-01-12
    • 2020-09-12
    • 2020-03-03
    • 1970-01-01
    • 1970-01-01
    • 2018-10-04
    相关资源
    最近更新 更多