log.h
上传用户:gzpyjq
上传日期:2013-01-31
资源大小:1852k
文件大小:3k
源码类别:

手机WAP编程

开发平台:

WINDOWS

  1. /*
  2.  * log.h - logging functions
  3.  *
  4.  * Please note that opening and closing of log files are not thread safe.
  5.  * Don't do it unless you're in single-thread mode.
  6.  */
  7. #ifndef GWLOG_H
  8. #define GWLOG_H
  9. /* If we're using GCC, we can get it to check log function arguments. */
  10. #ifdef __GNUC__
  11. #define PRINTFLIKE __attribute__((format(printf, 2, 3)))
  12. #define PRINTFLIKE2 __attribute__((format(printf, 3, 4)))
  13. #else
  14. #define PRINTFLIKE
  15. #define PRINTFLIKE2
  16. #endif
  17. /* Symbolic levels for output levels. */
  18. enum output_level {
  19. GW_DEBUG, GW_INFO, GW_WARNING, GW_ERROR, GW_PANIC
  20. };
  21. /* Print a panicky error message and terminate the program with a failure.
  22.  * So, this function is called when there is no other choice than to exit
  23.  * immediately, with given reason
  24.  */
  25. #define panic gw_panic
  26. void gw_panic(int, const char *, ...) PRINTFLIKE ;
  27. /* Print a normal error message. Used when something which should be
  28.  * investigated and possibly fixed, happens. The error might be fatal, too,
  29.  * but we have time to put system down peacefully.
  30.  */
  31. void error(int, const char *, ...) PRINTFLIKE ;
  32. /* Print a warning message. 'Warning' is a message that should be told and
  33.  * distinguished from normal information (info), but does not necessary 
  34.  * require any further investigations. Like 'warning, no sender number set'
  35.  */
  36. void warning(int, const char *, ...) PRINTFLIKE ;
  37. /* Print an informational message. This information should be limited to
  38.  * one or two rows per request, if real debugging information is needed,
  39.  * use debug
  40.  */
  41. void info(int, const char *, ...) PRINTFLIKE ;
  42. /*
  43.  * Print a debug message. Most of the log messages should be of this level 
  44.  * when the system is under development. The first argument gives the `place'
  45.  * where the function is called from; see function set_debug_places.
  46.  */
  47. void debug(const char *, int, const char *, ...) PRINTFLIKE2 ;
  48. /*
  49.  * Set the places from which debug messages are actually printed. This
  50.  * allows run-time configuration of what is and is not logged when debug
  51.  * is called. `places' is a string of tokens, separated by whitespace and/or
  52.  * commas, with trailing asterisks (`*') matching anything. For instance,
  53.  * if `places' is "wap.wsp.* wap.wtp.* wapbox", then all places that begin 
  54.  * with "wap.wsp." or "wap.wtp." (including the dots) are logged, and so 
  55.  * is the place called "wapbox". Nothing else is logged at debug level, 
  56.  * however. The 'places' string can also have negations, marked with '-' at 
  57.  * the start, so that nothing in that place is outputted. So if the string is
  58.  * "wap.wsp.* -wap.wap.http", only wap.wsp is logged, but not http-parts on 
  59.  * it
  60.  */
  61. void log_set_debug_places(const char *places);
  62. /* Set minimum level for output messages to stderr. Messages with a lower 
  63.    level are not printed to standard error, but may be printed to files
  64.    (see below). */
  65. void log_set_output_level(enum output_level level);
  66. /*
  67.  * Set syslog usage. If `ident' is NULL, syslog is not used.
  68.  */
  69. void log_set_syslog(const char *ident, int syslog_level);
  70. /* Start logging to a file as well. The file will get messages at least of
  71.    level `level'. There is no need and no way to close the log file;
  72.    it will be closed automatically when the program finishes. Failures
  73.    when opening to the log file are printed to stderr. */
  74. void log_open(char *filename, int level);
  75. /* Close and re-open all logfiles */
  76. void log_reopen(void);
  77. /*
  78.  * Close all log files.
  79.  */
  80. void log_close_all(void);
  81. #endif