使用 log4php 在控制台上记录 php 错误,但它也显示在浏览器上

log php errors on console using log4php but it display on browser as well

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

我已经推荐并尝试过 logs php error but not display it in browser,但是 none 这些答案对我来说很简单,我的代码很简单。

<?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 - This is an informational message. WARN - I'm not feeling so good...

我希望它只出现在标准输出上。在这种情况下,如果我对 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...");

尝试

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.

我认为您调用文件的方式不正确!或缺少 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