Req #55129 [Opn]: LOG_ level constants don't comply with RFC 3164 on Windows
| From: | kalle@php.net | Date: | Fri, 08 Jul 2011 22:18:10 +0000 |
| Subject: | Req #55129 [Opn]: LOG_ level constants don't comply with RFC 3164 on Windows | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-161712@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=55129&edit=1
ID: 55129
Updated by: kalle@php.net
Reported by: sun at unleashedmind dot com
Summary: LOG_ level constants don't comply with RFC 3164 on
Windows
Status: Open
Type: Feature/Change Request
Package: Win32API related
Operating System: Windows
PHP Version: Irrelevant
Block user comment: N
Private report: N
New Comment:
Hi
I like the idea, perhaps we should cook something like this up together with @fat's patch for
multiple connections to syslog() and confront the RFC in and interoperability way in 5.4.
Previous Comments:
------------------------------------------------------------------------
[2011-07-04 11:51:21] sun at unleashedmind dot com
Description:
------------
On Windows, the LOG_* constant values differ from the values defined in RFC 3164. The values are
correct on Unix platforms.
Previously discussed in https://bugs.php.net/bug.php?id=18090 and closed as
bogus back in 2002.
Over at Drupal, we replaced custom log level constants with PHP's native LOG_* constants: http://drupal.org/node/1136130 -- and had to learn the
hard way that the constant values differ on Windows. (undocumented: http://php.net/manual/en/network.constants.php)
Drupal uses these severity levels for application-level logging. The logger is pluggable, so
messages may be stored in a database, third-party system, or simply passed to syslog(). Depending
on the logger implementation, messages may also be listed/read. Therefore, consistent log severity
level constant values are required.
The question arose why PHP overrides the LOG_* constant values on Windows, kinda violating the RFC,
and whether the reduction to values supported by Windows' event log could not happen in a
Windows-specific syslog() implementation instead, not affecting the global run-time constants.
I understand that it's Windows that's to blame. However, I don't see why PHP has to
follow Windows' bogus lead on not respecting the RFC. Conforming to industry standards would
be a huge benefit for interoperability with other systems.
Concrete change request:
- Make PHP's LOG_* constant values always conform to RFC 3164.
- Move the platform-specific mapping/reduction into a syslog() implementation for Windows.
Test script:
---------------
<?php
var_dump(LOG_EMERG, LOG_ALERT, LOG_CRIT, LOG_ERR, LOG_WARNING, LOG_NOTICE, LOG_INFO, LOG_DEBUG);
?>
Expected result:
----------------
int(0)
int(1)
int(2)
int(3)
int(4)
int(5)
int(6)
int(7)
Actual result:
--------------
int(1)
int(1)
int(1)
int(4)
int(5)
int(6)
int(6)
int(6)
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=55129&edit=1