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.