gpt4 book ai didi

c - apache 模块 ap_log_perror 与 ap_log_error 处于不同的级别

转载 作者:行者123 更新时间:2023-12-02 11:38:45 27 4
gpt4 key购买 nike

我有一个 apache 模块,可以记录一些行。如果我使用 ap_log_error 进行日志记录并将 LogLevel 设置为调试,我会看到该消息。但是,如果我尝试使用 ap_log_perror 我可以看到错误级别日志,但调试日志不会显示。似乎两者处于不同的级别,但我不知道如何设置池的级别(或获取它)。

我看到有一个调用ap_get_server_module_loglevel,但我不确定正确的索引是什么。尝试 0 我看到我在 apache.conf 顶层设置的级别(在本例中为trace1)。没有配置日志级别的虚拟主机。我有权访问的每个池似乎都以相同的方式运行。

static int foo_setup_handler(apr_pool_t *pconf, 
apr_pool_t *plog,
apr_pool_t *ptemp,
server_rec *s) {
int mod_log = ap_get_server_module_loglevel(s, 0);
ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, s,
"Post Config server mod 0 loglevel %d",
mod_log);
ap_log_perror(APLOG_MARK, APLOG_ERR, APR_SUCCESS, pconf,
" P E++++++++++++++++");
ap_log_perror(APLOG_MARK, APLOG_DEBUG, APR_SUCCESS, pconf,
"P D conf ++++++++++++++++");
ap_log_perror(APLOG_MARK, APLOG_DEBUG, APR_SUCCESS, plog,
"P D log ++++++++++++++++");
ap_log_perror(APLOG_MARK, APLOG_WARNING, APR_SUCCESS, plog,
"P W log ++++++++++++++++");
ap_log_perror(APLOG_MARK, APLOG_DEBUG, APR_SUCCESS, ptemp,
"P D temp++++++++++++++++");

这是错误日志中的输出。 (我从下面的行中删除了日期和线程 ID)

... [:debug] [pid 2..:tid 1...] mod_foo.c(123): Post Config  server mod 0 loglevel 8
... [:error] [pid 2..:tid 1...] P E++++++++++++++++
... [:warn] [pid 2..:tid 1...] P W log ++++++++++++++++

有什么想法为什么错误日志消息没有显示在配置的级别但确实显示在警告或错误级别吗?

最佳答案

这是一个错误吗?在 Apache 。请参阅this bug report

基本上,ap_log_perror 调用 log_error_core,并将 const server_rec *s 设置为 NULL,这与逻辑 here 发生冲突。 :

if (s == NULL) {
/*
* If we are doing stderr logging (startup), don't log messages that are
* above the default server log level unless it is a startup/shutdown
* notice
*/
#ifndef DEBUG
if ((level_and_mask != APLOG_NOTICE)
&& (level_and_mask > ap_default_loglevel)) {
return;
}
#endif

因此 ap_log_perror 只会显示通知或高于默认级别的消息(通常是警告)

关于c - apache 模块 ap_log_perror 与 ap_log_error 处于不同的级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52724041/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com