-- Thomas Gelf <[EMAIL PROTECTED]> wrote
(on Friday, 19 September 2008, 07:41 PM +0200):
> Here what Zend_Log_Writer_Syslog could look like:

Could you write a proposal for this, please? This is definitely a useful
addition.

> class Zend_Log_Writer_Syslog extends Zend_Log_Writer_Abstract
> {
>     /**
>      * Maps Zend_Log priorities to PHP's syslog priorities
>      * @var array
>      */
>     protected $_priorities = array(Zend_Log::EMERG  => LOG_EMERG,
>                                    Zend_Log::ALERT  => LOG_ALERT,
>                                    Zend_Log::CRIT   => LOG_CRIT,
>                                    Zend_Log::ERR    => LOG_ERR,
>                                    Zend_Log::WARN   => LOG_WARNING,
>                                    Zend_Log::NOTICE => LOG_NOTICE,
>                                    Zend_Log::INFO   => LOG_INFO,
>                                    Zend_Log::DEBUG  => LOG_DEBUG);
>
>     /**
>      * The default log priority - for unmapped custom priorities
>      * @var string
>      */
>     protected $_defaultPriority = LOG_NOTICE;
>
>     public function __construct($application = 'Zend_Log')
>     {
>         if (false === @openlog($application, LOG_PID, LOG_USER)) {
>             throw new Zend_Log_Exception('Cannot connect to syslog');
>         }
>     }
>
>     /**
>      * Close syslog.
>      *
>      * @return void
>      */
>     public function shutdown()
>     {
>         @closelog();
>     }
>
>     /**
>      * Write a message to syslog.
>      *
>      * @param  array  $event  event data
>      * @return void
>      */
>     protected function _write($event)
>     {
>         if (array_key_exists($event['priority'], $this-> _priorities)) {
>             $priority = $this-> _priorityStyles[$event['priority']];
>         } else {
>             $priority = $this-> _defaultPriority;
>         }
>
>         if (false === @syslog($priority, $event['message'])) {
>             throw new Zend_Log_Exception('Unable to write to syslog');
>         }
>     }
> }
>
> Even if LOG_USER should be fine for most users (it is available on
> Windows too) methods allowing to change facility could be added, the
> rest should be fine.
>
> Could someone test if this would "work out of the box" on windows?
>
> Cheers,
> Thomas
>
> NB: I'm not sure about the @'s in front of the syslog functions - as
>     syslog is working fine on all of my systems I never experienced
>     such an error ;-) If no one knows I'll test it - if there is even
>     one single scenario producing a PHP-notice they have to stay there.
>
>
> Thomas Gelf schrieb:
> > Hi list,
> >
> > as surely most of you have a lot of free time available I'll throw
> > in a new old topic to hopefully be discussed in this round ;-)
> >
> > It's about logging. I like Zend_Log, it's well done - but the writers
> > currently available are not an option for most of my projects. Let's
> > make some example:
> >
> > * stream writers writing to local files are running fine, are not
> >   blocking parallel requests and should be ok so far if you just
> >   want your logs to be written down somewhere
> >
> > * it's difficult to set up a secure environment allowing PHP scripts
> >   running under different UIDs writing to the same log file (mostly
> >   leading to insecure logfile permissions or strange hacks)
> >
> > * hacked PHP sites are able to modify (application) log entries if
> >   PHP is able to write to them
> >
> > * if you want a cronjob to rotate log files for a PHP-written daemon
> >   you have to implement signal handlers (who has ever done so knows
> >   that this could be a really funny task)
> >
> > * writing to DB is great for small projects - but impossible for sites
> >   with heavy traffic. If you want to handle high loads your application
> >   should be able to serve most requests without the need to connect to
> >   your database cluster
> >
> > * ZF documentation should make people aware of locking and therefore
> >   performance issues when using MyISAM instead of InnoDB on MySQL
> >
> > * who wants to achieve a distributed centralized logging is currently
> >   either forced to write it's own syslog writer or probably going to
> >   reimplement things syslog would usually do for you
> >
> > Said all this: why is there still no Zend_Log_Writer_Syslog? Windows
> > is no excuse - PHP's syslog() function exists also there, so we should
> > be able to satisfy ZF's rules. And those rare windows people taking
> > care of their logs will surely be able to find out where they are going
> > to finish ;-) We should however avoid LOCAL*-facilities, as far as I
> > know (didn't test it) they are not available on windows.
> >
> > Thanks for your feedback - and have a nice weekend!

-- 
Matthew Weier O'Phinney
Software Architect       | [EMAIL PROTECTED]
Zend Framework           | http://framework.zend.com/

Reply via email to