]> granicus.if.org Git - php/commitdiff
Logging to syslog with dynamic error levels (related to #49467)
authorJani Ollikainen <jani.ollikainen@valve.fi>
Tue, 29 Dec 2015 10:18:41 +0000 (12:18 +0200)
committerAnatol Belski <ab@php.net>
Thu, 2 Jun 2016 11:25:29 +0000 (13:25 +0200)
ext/standard/basic_functions.c
main/main.c
main/php.h

index 3774588f110028b9ee9638842b7839a73bb92772..3f363d1ccee1e6e098756d274cabf91c6b1b28a0 100644 (file)
@@ -4704,7 +4704,7 @@ PHPAPI int _php_error_log_ex(int opt_err, char *message, size_t message_len, cha
                        break;
 
                default:
-                       php_log_err(message);
+                       php_log_err(message, LOG_NOTICE);
                        break;
        }
        return SUCCESS;
index 5762fce690070a32cde72fd6ad0275f8a5e5c660..0bf50e01ac2925a23b0a5e2727b943b4aa190dc1 100644 (file)
@@ -609,7 +609,7 @@ PHPAPI int php_get_module_initialized(void)
 
 /* {{{ php_log_err
  */
-PHPAPI ZEND_COLD void php_log_err(char *log_message)
+PHPAPI ZEND_COLD void php_log_err(char *log_message, int syslog_type_int)
 {
        int fd = -1;
        time_t error_time;
@@ -624,7 +624,7 @@ PHPAPI ZEND_COLD void php_log_err(char *log_message)
        if (PG(error_log) != NULL) {
 #ifdef HAVE_SYSLOG_H
                if (!strcmp(PG(error_log), "syslog")) {
-                       php_syslog(LOG_NOTICE, "%s", log_message);
+                       php_syslog(syslog_type_int, "%s", log_message);
                        PG(in_error_log) = 0;
                        return;
                }
@@ -1049,6 +1049,7 @@ static ZEND_COLD void php_error_cb(int type, const char *error_filename, const u
        if (display && (EG(error_reporting) & type || (type & E_CORE))
                && (PG(log_errors) || PG(display_errors) || (!module_initialized))) {
                char *error_type_str;
+               int syslog_type_int = LOG_NOTICE;
 
                switch (type) {
                        case E_ERROR:
@@ -1056,29 +1057,36 @@ static ZEND_COLD void php_error_cb(int type, const char *error_filename, const u
                        case E_COMPILE_ERROR:
                        case E_USER_ERROR:
                                error_type_str = "Fatal error";
+                               syslog_type_int = LOG_ERR;
                                break;
                        case E_RECOVERABLE_ERROR:
                                error_type_str = "Catchable fatal error";
+                               syslog_type_int = LOG_ERR;
                                break;
                        case E_WARNING:
                        case E_CORE_WARNING:
                        case E_COMPILE_WARNING:
                        case E_USER_WARNING:
                                error_type_str = "Warning";
+                               syslog_type_int = LOG_WARNING;
                                break;
                        case E_PARSE:
                                error_type_str = "Parse error";
+                               syslog_type_int = LOG_EMERG;
                                break;
                        case E_NOTICE:
                        case E_USER_NOTICE:
                                error_type_str = "Notice";
+                               syslog_type_int = LOG_NOTICE;
                                break;
                        case E_STRICT:
                                error_type_str = "Strict Standards";
+                               syslog_type_int = LOG_INFO;
                                break;
                        case E_DEPRECATED:
                        case E_USER_DEPRECATED:
                                error_type_str = "Deprecated";
+                               syslog_type_int = LOG_INFO;
                                break;
                        default:
                                error_type_str = "Unknown error";
@@ -1093,7 +1101,7 @@ static ZEND_COLD void php_error_cb(int type, const char *error_filename, const u
                        }
 #endif
                        spprintf(&log_buffer, 0, "PHP %s:  %s in %s on line %d", error_type_str, buffer, error_filename, error_lineno);
-                       php_log_err(log_buffer);
+                       php_log_err(log_buffer, syslog_type_int);
                        efree(log_buffer);
                }
 
index d0ec07c82e1fbe7c7b7c3e18207fcfd41d1a96f6..d9a387e964dc7496877b96785cdde905632446a3 100644 (file)
@@ -280,7 +280,7 @@ PHPAPI size_t php_write(void *buf, size_t size);
 PHPAPI size_t php_printf(const char *format, ...) PHP_ATTRIBUTE_FORMAT(printf, 1,
                2);
 PHPAPI int php_get_module_initialized(void);
-PHPAPI ZEND_COLD void php_log_err(char *log_message);
+PHPAPI ZEND_COLD void php_log_err(char *log_message, int syslog_type_int);
 int Debug(char *format, ...) PHP_ATTRIBUTE_FORMAT(printf, 1, 2);
 int cfgparse(void);
 END_EXTERN_C()