Is it possible to redirect $stderr to a Logger isntance?

Hi, is it possible to redirect $stderr to any available logger instance
(as
Logger, SyslogLogger, Logging)?

I think it cannot be done, since current Loggers can log to $stderr so
we
would get some kind of “loop” XD

Thanks for any comment.

On Jan 2, 2010, at 2:37 PM, Iñaki Baz C. wrote:

Hi, is it possible to redirect $stderr to any available logger instance (as
Logger, SyslogLogger, Logging)?

I think it cannot be done, since current Loggers can log to $stderr so we
would get some kind of “loop” XD

$stderr is a file descriptor. You can reopen the descriptor to any other
valid descriptor: file, socket, pipe, unix socket, etc.

For any of the loggers you mentioned above, get a hold of the internal
descriptor the logger is using and then …

new_fd = logger.get_logger_file_descriptor
$stderr.reopen new_fd

Blessings,
TwP

El Sábado, 2 de Enero de 2010, Tim P.
escribió:> For any of the loggers you mentioned above, get a hold of the internal

descriptor the logger is using and then …

new_fd = logger.get_logger_file_descriptor
$stderr.reopen new_fd

Thanks. The problem is that Syslog is a daemon rather than a file
descriptor.
This is: Syslog is a daemon which receives messages from syslog clients
and
log them to files or databases.

However I was able to use Syslog as $stderr as follows (thanks to Eric):

require ‘syslog_logger’ # Logger/Syslog converter

class MySyslogLogger < SyslogLogger
alias puts error
alias write error
def flush; self; end
end

$stderr = MySyslogLogger.new(‘foo’)