
cherokee at cherokee-project
Jun 29, 2009, 11:36 AM
Views: 93
Permalink
|
|
[3402] cherokee/trunk/cherokee: Add support for LOG_ERRNO and LOG_ERRNO_S
|
|
Revision: 3402 http://svn.cherokee-project.com/changeset/3402 Author: alo Date: 2009-06-29 20:36:27 +0200 (Mon, 29 Jun 2009) Log Message: ----------- Add support for LOG_ERRNO and LOG_ERRNO_S Modified Paths: -------------- cherokee/trunk/cherokee/error_log.c cherokee/trunk/cherokee/error_log.h Modified: cherokee/trunk/cherokee/error_log.c =================================================================== --- cherokee/trunk/cherokee/error_log.c 2009-06-29 14:42:27 UTC (rev 3401) +++ cherokee/trunk/cherokee/error_log.c 2009-06-29 18:36:27 UTC (rev 3402) @@ -42,7 +42,8 @@ cherokee_logger_t *logger; cherokee_buffer_t tmp = CHEROKEE_BUF_INIT; - /* Error message formatting */ + /* Error message formatting + */ cherokee_buf_add_bogonow (&tmp, false); switch (type) { @@ -61,15 +62,18 @@ cherokee_buffer_add_va_list (&tmp, format, ap); va_end (ap); - /* Logging: 1st option - connection's logger */ + /* Logging: 1st option - connection's logger + */ logger = LOGGER (CHEROKEE_THREAD_PROP_GET (thread_logger_error_ptr)); - /* Logging: 2nd option - default logger */ + /* Logging: 2nd option - default logger + */ if (logger == NULL) { logger = default_error_logger; } - /* Do logging */ + /* Do logging + */ if (logger) { cherokee_logger_write_error (logger, &tmp); } @@ -83,3 +87,37 @@ cherokee_buffer_mrproper (&tmp); return ret_ok; } + + +ret_t cherokee_error_errno_log (int error, cherokee_error_type_t type, const char *format, ...) +{ + va_list ap; + const char *errstr; + char err_tmp[ERROR_MAX_BUFSIZE]; + cherokee_buffer_t buffer = CHEROKEE_BUF_INIT; + + /* Get the error string + */ + errstr = cherokee_strerror_r (error, err_tmp, sizeof(err_tmp)); + if (errstr == NULL) + errstr = "unknwon error (?)"; + + /* Render + */ + cherokee_buffer_ensure_size (&buffer, 128); + va_start (ap, format); + cherokee_buffer_add_va_list (&buffer, format, ap); + va_end (ap); + + /* Replace error + */ + cherokee_buffer_replace_string (&buffer, (char *)"${errno}", 8, + (char *) errstr, strlen(errstr)); + + /* Log & clean up + */ + cherokee_error_log (type, "%s", buffer.buf); + cherokee_buffer_mrproper (&buffer); + + return ret_ok; +} Modified: cherokee/trunk/cherokee/error_log.h =================================================================== --- cherokee/trunk/cherokee/error_log.h 2009-06-29 14:42:27 UTC (rev 3401) +++ cherokee/trunk/cherokee/error_log.h 2009-06-29 18:36:27 UTC (rev 3402) @@ -39,21 +39,25 @@ } cherokee_error_type_t; #ifdef __GNUC__ -# define LOG_WARNING(fmt,arg...) cherokee_error_log(cherokee_err_warning, "%s:%d - "fmt, __FILE__, __LINE__, ##arg) -# define LOG_ERROR(fmt,arg...) cherokee_error_log(cherokee_err_error, "%s:%d - "fmt, __FILE__, __LINE__, ##arg) -# define LOG_CRITICAL(fmt,arg...) cherokee_error_log(cherokee_err_critical, "%s:%d - "fmt, __FILE__, __LINE__, ##arg) +# define LOG_WARNING(fmt,arg...) cherokee_error_log(cherokee_err_warning, "%s:%d - "fmt, __FILE__, __LINE__, ##arg) +# define LOG_ERROR(fmt,arg...) cherokee_error_log(cherokee_err_error, "%s:%d - "fmt, __FILE__, __LINE__, ##arg) +# define LOG_CRITICAL(fmt,arg...) cherokee_error_log(cherokee_err_critical, "%s:%d - "fmt, __FILE__, __LINE__, ##arg) +# define LOG_ERRNO(t,e,fmt,arg...) cherokee_error_errno_log(e, t, "%s:%d - "fmt, __FILE__, __LINE__, ##arg) #else # define LOG_WARNING(t,fmt,...) cherokee_error_log(cherokee_err_warning, "%s:%d - "fmt, __FILE__, __LINE__, __VA_ARGS__) # define LOG_ERROR(t,fmt,...) cherokee_error_log(cherokee_err_error, "%s:%d - "fmt, __FILE__, __LINE__, __VA_ARGS__) # define LOG_CRITIAL(t,fmt,...) cherokee_error_log(cherokee_err_critical, "%s:%d - "fmt, __FILE__, __LINE__, __VA_ARGS__) +# define LOG_ERRNO(t,e,fmt,...) cherokee_error_errno_log(e, t, "%s:%d - "fmt, __FILE__, __LINE__, __VA_ARGS__) #endif -#define LOG_WARNING_S(str) LOG_WARNING("%s", str) -#define LOG_ERROR_S(str) LOG_ERROR("%s", str) -#define LOG_CRITICAL_S(str) LOG_CRITICAL("%s", str) +#define LOG_WARNING_S(str) LOG_WARNING("%s", str) +#define LOG_ERROR_S(str) LOG_ERROR("%s", str) +#define LOG_CRITICAL_S(str) LOG_CRITICAL("%s", str) +#define LOG_ERRNO_S(t,e,str) LOG_ERRNO(t,e,"%s",str) - ret_t cherokee_error_log (cherokee_error_type_t type, const char *format, ...); +ret_t cherokee_error_errno_log (int error, cherokee_error_type_t type, const char *format, ...); ret_t cherokee_error_log_set_log (cherokee_logger_t *logger); + #endif /* CHEROKEE_ERROR_LOG_H */
|