代码之家  ›  专栏  ›  技术社区  ›  Paul Rubel

apache模块ap\u log\u peror与ap\u log\u error处于不同的级别

  •  3
  • Paul Rubel  · 技术社区  · 6 年前

    我有一个apache模块,它记录了一些行。如果我用 ap_log_error 已经设定好了 LogLevel 为了调试,我看到了消息。但是,如果我尝试使用ap\u log\u peror,我可以看到错误级别的日志,但是调试日志不会显示。似乎这两个级别不同,但我不知道如何设置池的级别(或获取池的级别)。

    我看到有电话 ap_get_server_module_loglevel

    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 ++++++++++++++++
    

    1 回复  |  直到 6 年前
        1
  •  1
  •   AShelly    6 年前

    这是虫子?在阿帕奇。看到了吗 this bug report

    基本上, ap_log_perror 电话 log_error_core const server_rec *s 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\u log\u perror只会显示通知,或超过默认级别(通常是警告)的消息