Syslog::Logger
class Syslog::Logger
Parent:Object
系统日志::记录器是一个工作日志记录器,通过系统日志而不是文件记录。您可以使用Syslog :: Logger在多台机器之间汇总日志。
默认情况下,Syslog :: Logger使用程序名称“ruby”,但可以通过第一个参数将其更改为:: new。
注意!初次初始化Syslog :: Logger时,只能设置Syslog :: Logger程序名称。这是Syslog :: Logger使用系统日志的方式的限制(在某些方面,这是对syslog(3)工作方式的限制)。尝试在第一次初始化后更改Syslog :: Logger的程序名称将被忽略。
例
以下内容将在本地机器上登录到syslogd:
require 'syslog/logger'
log = Syslog::Logger.new 'my_program'
log.info 'this line will be logged via syslog(3)'
该设施也可以设置为指定将被使用的设施级别:
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'
您可能需要先执行一些syslog.conf设置。对于BSD机器,将以下行添加到/etc/syslog.conf中:
!my_program
*.* /var/log/my_program.log
然后触摸/var/log/my_program.log并用HUP(FreeBSD上的killall -HUP syslogd)发信号通知syslogd。
如果您希望将日志自动翻转并存档,请参阅newsyslog.conf(5)和newsyslog(8)手册页。
常量
LEVEL_MAP
将Logger警告类型映射到syslog(3)警告类型。
来自Ruby应用程序的消息不被视为使用syslog(3)来自其他系统守护进程的消息的关键,因此大多数消息都会减少一级。例如,Ruby Logger的致命消息被认为是syslog(3)的错误。
版
您正在使用的Syslog :: Logger版本。
属性
facilityRW
facility参数用于指定记录消息的程序类型。
formatterRW
记录格式化程序,Proc
它将接收四个参数并返回格式化的消息。参数是:
severity
日志消息的严重性。
time
表示消息记录时间的Time实例。
progname
程序名已配置,或传递给记录器方法。
msg
用户传递给日志消息的对象
; 不一定是一个字符串。
该块应该返回一个可以通过写入日志设备的对象write
。未设置格式化程序时使用默认格式化程序。
levelRW
Logger兼容性的日志级别。
公共类方法
make_methods(meth) 显示源
为等级构建方法meth
。
# File ext/syslog/lib/syslog/logger.rb, line 106
def self.make_methods meth
level = ::Logger.const_get(meth.upcase)
eval " def #{meth}(message = nil, &block)
add(#{level}, message, &block)
end
def #{meth}?
@level <= #{level}
end
", nil, __FILE__, __LINE__ + 1
end
new(program_name = 'ruby', facility = nil)显示源
为记录器兼容性填写变量。如果这是Syslog :: Logger的第一个实例,program_name
可以设置为更改记录的程序名称。该facility
可设置为指定要使用的设施水平。
由于系统日志的工作方式,只能选择一个程序名称。
# File ext/syslog/lib/syslog/logger.rb, line 190
def initialize program_name = 'ruby', facility = nil
@level = ::Logger::DEBUG
@formatter = Formatter.new
@@syslog ||= Syslog.open(program_name)
@facility = (facility || @@syslog.facility)
end
syslog() 显示源
返回创建第一个实例时初始化的内部Syslog对象。
# File ext/syslog/lib/syslog/logger.rb, line 92
def self.syslog
@@syslog
end
syslog=(syslog) 显示源
指定要使用的内部Syslog对象。
# File ext/syslog/lib/syslog/logger.rb, line 99
def self.syslog= syslog
@@syslog = syslog
end
公共实例方法
add(severity, message = nil, progname = nil, &block) 显示源
几乎重复#add。progname
被忽略。
# File ext/syslog/lib/syslog/logger.rb, line 202
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
debug()显示源
message
在调试(syslog调试)日志级别记录,或者记录从块返回的消息。
# File ext/syslog/lib/syslog/logger.rb, line 155
error()显示源
message
在错误(syslog警告)日志级别记录a ,或者记录从块返回的消息。
# File ext/syslog/lib/syslog/logger.rb, line 137
fatal() 显示源
message
在致命(syslog err)日志级别记录a ,或者记录从块返回的消息。
# File ext/syslog/lib/syslog/logger.rb, line 131
info()显示源
message
在info(syslog info)日志级别记录,或记录从该块返回的消息。
# File ext/syslog/lib/syslog/logger.rb, line 149
unknown() 显示源
记录message
未知(系统日志警报)日志级别,或记录从该块返回的消息。
# File ext/syslog/lib/syslog/logger.rb, line 125
warn() 显示源
message
在warn(syslog通知)日志级别记录,或者记录从块返回的消息。
# File ext/syslog/lib/syslog/logger.rb, line 143