Syslog::Logger is a Logger work-alike that logs via syslog instead of to a file. You can use Syslog::Logger to aggregate logs between multiple machines.
By default, Syslog::Logger uses the program name 'ruby', but this can be changed via the first argument to ::new.
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.
Example
The following will log to syslogd on your local machine:
require 'syslog/logger'
log = Syslog::Logger.new 'my_program'
log.info 'this line will be logged via syslog(3)'
Also the facility may be set to specify the facility level which will be used:
log.info 'this line will be logged using Syslog default facility level'
log_local1 = Syslog::Logger.new 'my_program', Syslog::LOG_LOCAL1
log_local1.info 'this line will be logged using local1 facility level'
You may need to perform some syslog.conf setup first. For a BSD machine add the following lines to /etc/syslog.conf:
!my_program
*.* /var/log/my_program.log
Then touch /var/log/my_program.log and signal syslogd with a HUP (killall -HUP syslogd, on FreeBSD).
If you wish to have logs automatically roll over and archive, see the newsyslog.conf(5) and newsyslog(8) man pages.
- MODULE Syslog::Logger::Severity
- CLASS Syslog::Logger::Formatter
| VERSION | = | '2.1.0' |
The version of Syslog::Logger you are using. |
||
| LEVEL_MAP | = | { ::Logger::UNKNOWN => Syslog::LOG_ALERT, ::Logger::FATAL => Syslog::LOG_ERR, ::Logger::ERROR => Syslog::LOG_WARNING, ::Logger::WARN => Syslog::LOG_NOTICE, ::Logger::INFO => Syslog::LOG_INFO, ::Logger::DEBUG => Syslog::LOG_DEBUG, } |
Maps Logger warning types to syslog(3) warning types. Messages from Ruby applications are not considered as critical as messages from other system daemons using syslog(3), so most messages are reduced by one level. For example, a fatal message for Ruby's Logger is considered an error for syslog(3). |
||
| [RW] | facility | The facility argument is used to specify what type of program is logging the message. |
| [RW] | formatter | Logging formatter, as a
The block should return an Object that can be
written to the logging device via |
| [RW] | level | Log level for Logger compatibility. |
Builds a methods for level meth.
Fills in variables for Logger compatibility. If
this is the first instance of Syslog::Logger,
program_name may be set to change the logged program name. The
facility may be set to specify the facility level which will
be used.
Due to the way syslog works, only one program name may be chosen.
Returns the internal Syslog object that is initialized when the first instance is created.
Almost duplicates #add.
progname is ignored.
# File ext/syslog/lib/syslog/logger.rb, line 203 def add severity, message = nil, progname = nil, &block severity ||= ::Logger::UNKNOWN @level <= severity and @@syslog.log( (LEVEL_MAP[severity] | @facility), '%s', formatter.call(severity, Time.now, progname, (message || block.call)) ) true end
Logs a message at the debug (syslog debug) log level, or logs
the message returned from the block.
Logs a message at the error (syslog warning) log level, or
logs the message returned from the block.
Logs a message at the fatal (syslog err) log level, or logs
the message returned from the block.
Logs a message at the info (syslog info) log level, or logs
the message returned from the block.
Logs a message at the unknown (syslog alert) log level, or
logs the message returned from the block.