[ruby-core:81950] Re: [Ruby trunk Bug#13727] Not able to set program_name for new Syslog::Logger

From: Eric Wong <normalperson@...>
Date: 2017-07-07 07:44:39 UTC
List: ruby-core #81950
melentievm@gmail.com wrote:
> Hi!
> 
> Every instance of syslog logger uses same program_name as first initialized one, because they all share single instance of Syslog (https://github.com/ruby/ruby/blob/trunk/ext/syslog/lib/syslog/logger.rb#L195)

Yes, this is documented at the top of that file:

|  NOTE! You can only set the Syslog::Logger program name when you initialize
|  Syslog::Logger for the first time.  This is a limitation of the way
|  Syslog::Logger uses syslog (and in some ways, a limitation of the way
|  syslog(3) works).  Attempts to change Syslog::Logger's program name after the
|  first initialization will be ignored.

If Ruby Syslog were to support different program names, it would
have to repeatedly make calls openlog(3)/closelog(3) C library
functions.  That would still leave reentrancy + thread-safety
problems, and probably small performance ones, too.

I suggest using a short program name and perhaps using a
context-specific prefix (perhaps stored in Thread.current[])
for each call, instead.

Unsubscribe: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>

In This Thread

Prev Next