Annotation of win32/apache22/include/http_log.h, revision 1.1

1.1     ! moko        1: /* Licensed to the Apache Software Foundation (ASF) under one or more
        !             2:  * contributor license agreements.  See the NOTICE file distributed with
        !             3:  * this work for additional information regarding copyright ownership.
        !             4:  * The ASF licenses this file to You under the Apache License, Version 2.0
        !             5:  * (the "License"); you may not use this file except in compliance with
        !             6:  * the License.  You may obtain a copy of the License at
        !             7:  *
        !             8:  *     http://www.apache.org/licenses/LICENSE-2.0
        !             9:  *
        !            10:  * Unless required by applicable law or agreed to in writing, software
        !            11:  * distributed under the License is distributed on an "AS IS" BASIS,
        !            12:  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
        !            13:  * See the License for the specific language governing permissions and
        !            14:  * limitations under the License.
        !            15:  */
        !            16: 
        !            17: /**
        !            18:  * @file  http_log.h
        !            19:  * @brief Apache Logging library
        !            20:  *
        !            21:  * @defgroup APACHE_CORE_LOG Logging library
        !            22:  * @ingroup  APACHE_CORE
        !            23:  * @{
        !            24:  */
        !            25: 
        !            26: #ifndef APACHE_HTTP_LOG_H
        !            27: #define APACHE_HTTP_LOG_H
        !            28: 
        !            29: #ifdef __cplusplus
        !            30: extern "C" {
        !            31: #endif
        !            32: 
        !            33: #include "apr_thread_proc.h"
        !            34: 
        !            35: #ifdef HAVE_SYSLOG
        !            36: #include <syslog.h>
        !            37: 
        !            38: #ifndef LOG_PRIMASK
        !            39: #define LOG_PRIMASK 7
        !            40: #endif
        !            41: 
        !            42: #define APLOG_EMERG     LOG_EMERG     /* system is unusable */
        !            43: #define APLOG_ALERT     LOG_ALERT     /* action must be taken immediately */
        !            44: #define APLOG_CRIT      LOG_CRIT      /* critical conditions */
        !            45: #define APLOG_ERR       LOG_ERR       /* error conditions */
        !            46: #define APLOG_WARNING   LOG_WARNING   /* warning conditions */
        !            47: #define APLOG_NOTICE    LOG_NOTICE    /* normal but significant condition */
        !            48: #define APLOG_INFO      LOG_INFO      /* informational */
        !            49: #define APLOG_DEBUG     LOG_DEBUG     /* debug-level messages */
        !            50: 
        !            51: #define APLOG_LEVELMASK LOG_PRIMASK   /* mask off the level value */
        !            52: 
        !            53: #else
        !            54: 
        !            55: #define        APLOG_EMERG     0       /* system is unusable */
        !            56: #define        APLOG_ALERT     1       /* action must be taken immediately */
        !            57: #define        APLOG_CRIT      2       /* critical conditions */
        !            58: #define        APLOG_ERR       3       /* error conditions */
        !            59: #define        APLOG_WARNING   4       /* warning conditions */
        !            60: #define        APLOG_NOTICE    5       /* normal but significant condition */
        !            61: #define        APLOG_INFO      6       /* informational */
        !            62: #define        APLOG_DEBUG     7       /* debug-level messages */
        !            63: 
        !            64: #define        APLOG_LEVELMASK 7       /* mask off the level value */
        !            65: 
        !            66: #endif
        !            67: 
        !            68: /* APLOG_NOERRNO is ignored and should not be used.  It will be
        !            69:  * removed in a future release of Apache.
        !            70:  */
        !            71: #define APLOG_NOERRNO          (APLOG_LEVELMASK + 1)
        !            72: 
        !            73: /* Use APLOG_TOCLIENT on ap_log_rerror() to give content
        !            74:  * handlers the option of including the error text in the 
        !            75:  * ErrorDocument sent back to the client. Setting APLOG_TOCLIENT
        !            76:  * will cause the error text to be saved in the request_rec->notes 
        !            77:  * table, keyed to the string "error-notes", if and only if:
        !            78:  * - the severity level of the message is APLOG_WARNING or greater
        !            79:  * - there are no other "error-notes" set in request_rec->notes
        !            80:  * Once error-notes is set, it is up to the content handler to
        !            81:  * determine whether this text should be sent back to the client.
        !            82:  * Note: Client generated text streams sent back to the client MUST 
        !            83:  * be escaped to prevent CSS attacks.
        !            84:  */
        !            85: #define APLOG_TOCLIENT          ((APLOG_LEVELMASK + 1) * 2)
        !            86: 
        !            87: /* normal but significant condition on startup, usually printed to stderr */
        !            88: #define APLOG_STARTUP           ((APLOG_LEVELMASK + 1) * 4) 
        !            89: 
        !            90: #ifndef DEFAULT_LOGLEVEL
        !            91: #define DEFAULT_LOGLEVEL       APLOG_WARNING
        !            92: #endif
        !            93: 
        !            94: extern int AP_DECLARE_DATA ap_default_loglevel;
        !            95: 
        !            96: #define APLOG_MARK     __FILE__,__LINE__
        !            97: 
        !            98: /**
        !            99:  * Set up for logging to stderr.
        !           100:  * @param p The pool to allocate out of
        !           101:  */
        !           102: AP_DECLARE(void) ap_open_stderr_log(apr_pool_t *p);
        !           103: 
        !           104: /**
        !           105:  * Replace logging to stderr with logging to the given file.
        !           106:  * @param p The pool to allocate out of
        !           107:  * @param file Name of the file to log stderr output
        !           108:  */
        !           109: AP_DECLARE(apr_status_t) ap_replace_stderr_log(apr_pool_t *p, 
        !           110:                                                const char *file);
        !           111: 
        !           112: /**
        !           113:  * Open the error log and replace stderr with it.
        !           114:  * @param pconf Not used
        !           115:  * @param plog  The pool to allocate the logs from
        !           116:  * @param ptemp Pool used for temporary allocations
        !           117:  * @param s_main The main server
        !           118:  * @note ap_open_logs isn't expected to be used by modules, it is
        !           119:  * an internal core function 
        !           120:  */
        !           121: int ap_open_logs(apr_pool_t *pconf, apr_pool_t *plog, 
        !           122:                  apr_pool_t *ptemp, server_rec *s_main);
        !           123: 
        !           124: #ifdef CORE_PRIVATE
        !           125: 
        !           126: /**
        !           127:  * Perform special processing for piped loggers in MPM child
        !           128:  * processes.
        !           129:  * @param p Not used
        !           130:  * @param s Not used
        !           131:  * @note ap_logs_child_init is not for use by modules; it is an
        !           132:  * internal core function
        !           133:  */
        !           134: void ap_logs_child_init(apr_pool_t *p, server_rec *s);
        !           135: 
        !           136: #endif /* CORE_PRIVATE */
        !           137: 
        !           138: /* 
        !           139:  * The primary logging functions, ap_log_error, ap_log_rerror, ap_log_cerror,
        !           140:  * and ap_log_perror use a printf style format string to build the log message.  
        !           141:  * It is VERY IMPORTANT that you not include any raw data from the network, 
        !           142:  * such as the request-URI or request header fields, within the format 
        !           143:  * string.  Doing so makes the server vulnerable to a denial-of-service 
        !           144:  * attack and other messy behavior.  Instead, use a simple format string 
        !           145:  * like "%s", followed by the string containing the untrusted data.
        !           146:  */
        !           147: 
        !           148: /**
        !           149:  * ap_log_error() - log messages which are not related to a particular
        !           150:  * request or connection.  This uses a printf-like format to log messages
        !           151:  * to the error_log.
        !           152:  * @param file The file in which this function is called
        !           153:  * @param line The line number on which this function is called
        !           154:  * @param level The level of this error message
        !           155:  * @param status The status code from the previous command
        !           156:  * @param s The server on which we are logging
        !           157:  * @param fmt The format string
        !           158:  * @param ... The arguments to use to fill out fmt.
        !           159:  * @note Use APLOG_MARK to fill out file and line
        !           160:  * @note If a request_rec is available, use that with ap_log_rerror()
        !           161:  * in preference to calling this function.  Otherwise, if a conn_rec is
        !           162:  * available, use that with ap_log_cerror() in preference to calling
        !           163:  * this function.
        !           164:  * @warning It is VERY IMPORTANT that you not include any raw data from 
        !           165:  * the network, such as the request-URI or request header fields, within 
        !           166:  * the format string.  Doing so makes the server vulnerable to a 
        !           167:  * denial-of-service attack and other messy behavior.  Instead, use a 
        !           168:  * simple format string like "%s", followed by the string containing the 
        !           169:  * untrusted data.
        !           170:  */
        !           171: AP_DECLARE(void) ap_log_error(const char *file, int line, int level, 
        !           172:                              apr_status_t status, const server_rec *s, 
        !           173:                              const char *fmt, ...)
        !           174:                            __attribute__((format(printf,6,7)));
        !           175: 
        !           176: /**
        !           177:  * ap_log_perror() - log messages which are not related to a particular
        !           178:  * request, connection, or virtual server.  This uses a printf-like
        !           179:  * format to log messages to the error_log.
        !           180:  * @param file The file in which this function is called
        !           181:  * @param line The line number on which this function is called
        !           182:  * @param level The level of this error message
        !           183:  * @param status The status code from the previous command
        !           184:  * @param p The pool which we are logging for
        !           185:  * @param fmt The format string
        !           186:  * @param ... The arguments to use to fill out fmt.
        !           187:  * @note Use APLOG_MARK to fill out file and line
        !           188:  * @warning It is VERY IMPORTANT that you not include any raw data from 
        !           189:  * the network, such as the request-URI or request header fields, within 
        !           190:  * the format string.  Doing so makes the server vulnerable to a 
        !           191:  * denial-of-service attack and other messy behavior.  Instead, use a 
        !           192:  * simple format string like "%s", followed by the string containing the 
        !           193:  * untrusted data.
        !           194:  */
        !           195: AP_DECLARE(void) ap_log_perror(const char *file, int line, int level, 
        !           196:                              apr_status_t status, apr_pool_t *p, 
        !           197:                              const char *fmt, ...)
        !           198:                            __attribute__((format(printf,6,7)));
        !           199: 
        !           200: /**
        !           201:  * ap_log_rerror() - log messages which are related to a particular
        !           202:  * request.  This uses a a printf-like format to log messages to the
        !           203:  * error_log.
        !           204:  * @param file The file in which this function is called
        !           205:  * @param line The line number on which this function is called
        !           206:  * @param level The level of this error message
        !           207:  * @param status The status code from the previous command
        !           208:  * @param r The request which we are logging for
        !           209:  * @param fmt The format string
        !           210:  * @param ... The arguments to use to fill out fmt.
        !           211:  * @note Use APLOG_MARK to fill out file and line
        !           212:  * @warning It is VERY IMPORTANT that you not include any raw data from 
        !           213:  * the network, such as the request-URI or request header fields, within 
        !           214:  * the format string.  Doing so makes the server vulnerable to a 
        !           215:  * denial-of-service attack and other messy behavior.  Instead, use a 
        !           216:  * simple format string like "%s", followed by the string containing the 
        !           217:  * untrusted data.
        !           218:  */
        !           219: AP_DECLARE(void) ap_log_rerror(const char *file, int line, int level, 
        !           220:                                apr_status_t status, const request_rec *r, 
        !           221:                                const char *fmt, ...)
        !           222:                            __attribute__((format(printf,6,7)));
        !           223: 
        !           224: /**
        !           225:  * ap_log_cerror() - log messages which are related to a particular
        !           226:  * connection.  This uses a a printf-like format to log messages to the
        !           227:  * error_log.
        !           228:  * @param file The file in which this function is called
        !           229:  * @param line The line number on which this function is called
        !           230:  * @param level The level of this error message
        !           231:  * @param status The status code from the previous command
        !           232:  * @param c The connection which we are logging for
        !           233:  * @param fmt The format string
        !           234:  * @param ... The arguments to use to fill out fmt.
        !           235:  * @note Use APLOG_MARK to fill out file and line
        !           236:  * @note If a request_rec is available, use that with ap_log_rerror()
        !           237:  * in preference to calling this function.
        !           238:  * @warning It is VERY IMPORTANT that you not include any raw data from 
        !           239:  * the network, such as the request-URI or request header fields, within 
        !           240:  * the format string.  Doing so makes the server vulnerable to a 
        !           241:  * denial-of-service attack and other messy behavior.  Instead, use a 
        !           242:  * simple format string like "%s", followed by the string containing the 
        !           243:  * untrusted data.
        !           244:  */
        !           245: AP_DECLARE(void) ap_log_cerror(const char *file, int line, int level, 
        !           246:                                apr_status_t status, const conn_rec *c, 
        !           247:                                const char *fmt, ...)
        !           248:                            __attribute__((format(printf,6,7)));
        !           249: 
        !           250: /**
        !           251:  * Convert stderr to the error log
        !           252:  * @param s The current server
        !           253:  */
        !           254: AP_DECLARE(void) ap_error_log2stderr(server_rec *s);
        !           255: 
        !           256: /**
        !           257:  * Log the current pid of the parent process
        !           258:  * @param p The pool to use for logging
        !           259:  * @param fname The name of the file to log to
        !           260:  */
        !           261: AP_DECLARE(void) ap_log_pid(apr_pool_t *p, const char *fname);
        !           262: 
        !           263: /**
        !           264:  * Retrieve the pid from a pidfile.
        !           265:  * @param p The pool to use for logging
        !           266:  * @param filename The name of the file containing the pid
        !           267:  * @param mypid Pointer to pid_t (valid only if return APR_SUCCESS)
        !           268:  */
        !           269: AP_DECLARE(apr_status_t) ap_read_pid(apr_pool_t *p, const char *filename, pid_t *mypid);
        !           270: 
        !           271: /** @see piped_log */
        !           272: typedef struct piped_log piped_log;
        !           273: 
        !           274: /**
        !           275:  * @brief The piped logging structure.  
        !           276:  *
        !           277:  * Piped logs are used to move functionality out of the main server.  
        !           278:  * For example, log rotation is done with piped logs.
        !           279:  */
        !           280: struct piped_log {
        !           281:     /** The pool to use for the piped log */
        !           282:     apr_pool_t *p;
        !           283:     /** The pipe between the server and the logging process */
        !           284:     apr_file_t *fds[2];
        !           285:     /* XXX - an #ifdef that needs to be eliminated from public view. Shouldn't
        !           286:      * be hard */
        !           287: #ifdef AP_HAVE_RELIABLE_PIPED_LOGS
        !           288:     /** The name of the program the logging process is running */
        !           289:     char *program;
        !           290:     /** The pid of the logging process */
        !           291:     apr_proc_t *pid;
        !           292:     /** How to reinvoke program when it must be replaced */
        !           293:     apr_cmdtype_e cmdtype;
        !           294: #endif
        !           295: };
        !           296: 
        !           297: /**
        !           298:  * Open the piped log process
        !           299:  * @param p The pool to allocate out of
        !           300:  * @param program The program to run in the logging process
        !           301:  * @return The piped log structure
        !           302:  * @tip The log program is invoked as APR_SHELLCMD_ENV, 
        !           303:  *      @see ap_open_piped_log_ex to modify this behavior
        !           304:  */
        !           305: AP_DECLARE(piped_log *) ap_open_piped_log(apr_pool_t *p, const char *program);
        !           306: 
        !           307: /**
        !           308:  * Open the piped log process specifying the execution choice for program
        !           309:  * @param p The pool to allocate out of
        !           310:  * @param program The program to run in the logging process
        !           311:  * @param cmdtype How to invoke program, e.g. APR_PROGRAM, APR_SHELLCMD_ENV, etc
        !           312:  * @return The piped log structure
        !           313:  */
        !           314: AP_DECLARE(piped_log *) ap_open_piped_log_ex(apr_pool_t *p,
        !           315:                                              const char *program,
        !           316:                                              apr_cmdtype_e cmdtype);
        !           317: 
        !           318: /**
        !           319:  * Close the piped log and kill the logging process
        !           320:  * @param pl The piped log structure
        !           321:  */
        !           322: AP_DECLARE(void) ap_close_piped_log(piped_log *pl);
        !           323: 
        !           324: /**
        !           325:  * A macro to access the read side of the piped log pipe
        !           326:  * @param pl The piped log structure
        !           327:  * @return The native file descriptor
        !           328:  */
        !           329: #define ap_piped_log_read_fd(pl)       ((pl)->fds[0])
        !           330: 
        !           331: /**
        !           332:  * A macro to access the write side of the piped log pipe
        !           333:  * @param pl The piped log structure
        !           334:  * @return The native file descriptor
        !           335:  */
        !           336: #define ap_piped_log_write_fd(pl)      ((pl)->fds[1])
        !           337: 
        !           338: /**
        !           339:  * hook method to log error messages 
        !           340:  * @ingroup hooks
        !           341:  * @param file The file in which this function is called
        !           342:  * @param line The line number on which this function is called
        !           343:  * @param level The level of this error message
        !           344:  * @param status The status code from the previous command
        !           345:  * @param s The server which we are logging for
        !           346:  * @param r The request which we are logging for
        !           347:  * @param pool Memory pool to allocate from
        !           348:  * @param errstr message to log 
        !           349:  */
        !           350: AP_DECLARE_HOOK(void, error_log, (const char *file, int line, int level,
        !           351:                        apr_status_t status, const server_rec *s,
        !           352:                        const request_rec *r, apr_pool_t *pool,
        !           353:                        const char *errstr))
        !           354: 
        !           355: #ifdef __cplusplus
        !           356: }
        !           357: #endif
        !           358: 
        !           359: #endif /* !APACHE_HTTP_LOG_H */
        !           360: /** @} */

E-mail: