class Syslog::Logger
Syslog::Logger — это аналог Logger, который производит логирование через syslog вместо файла. Вы можете использовать Syslog::Logger для агрегации логов между несколькими машинами.
По умолчанию Syslog::Logger использует имя программы 'ruby', но это можно изменить, передав первый аргумент в ::new.
ВАЖНО! Вы можете установить имя программы Syslog::Logger только при первом инициализации Syslog::Logger. Это ограничение связано с тем, как Syslog::Logger использует syslog (и, отчасти, с тем, как работает syslog(3)). Попытки изменить имя программы Syslog::Logger после первой инициализации будут проигнорированы.
Пример
Следующий код будет записывать в syslogd на вашей локальной машине:
require 'syslog/logger' log = Syslog::Logger.new 'my_program' log.info 'this line will be logged via syslog(3)'
Также можно установить уровень логирования (facility), который будет использоваться:
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 и отправьте syslogd сигнал HUP (killall -HUP syslogd, на FreeBSD).
Если вы хотите, чтобы логи автоматически архивировались, см. страницы руководства newsyslog.conf(5) и newsyslog(8).
Константы
- LEVEL_MAP
-
Сопоставляет типы предупреждений Logger с типами предупреждений syslog(3).
Сообщения от приложений Ruby не считаются критическими, как сообщения от других системных демонов, использующих syslog(3), поэтому большинство сообщений уменьшается на один уровень. Например, сообщение fatal в Logger Ruby рассматривается как сообщение error в syslog(3).
- VERSION
-
Версия Syslog::Logger, которую вы используете.
Атрибуты
Аргумент facility используется для указания типа программы, которая производит логирование сообщения.
Форматировщик логирования, представляющий собой Proc функцию, которая принимает четыре аргумента и возвращает отформатированное сообщение. Аргументы:
-
severity -
Уровень серьёзности сообщения.
-
time -
Объект Time, представляющий время регистрации сообщения.
-
progname -
Настроенное имя программы (progname) или переданное в метод logger.
-
msg -
Объект, переданный пользователем в сообщение; не обязательно строка.
Блок должен возвращать объект Object, который можно записать в устройство регистрации write. Форматировщик по умолчанию используется, если форматировщик не задан.
Уровень логирования для совместимости с Logger.
Публичные методы класса
# File ext/syslog/lib/syslog/logger.rb, line 107
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 Создаёт методы для уровня meth.
# File ext/syslog/lib/syslog/logger.rb, line 191 def initialize program_name = 'ruby', facility = nil @level = ::Logger::DEBUG @formatter = Formatter.new @@syslog ||= Syslog.open(program_name) @facility = (facility || @@syslog.facility) end
Заполняет переменные для совместимости с Logger. Если это первый экземпляр Syslog::Logger, program_name можно установить, чтобы изменить имя регистрируемой программы. facility можно установить для указания уровня логирования (facility).
Из-за работы syslog можно выбрать только одно имя программы.
# File ext/syslog/lib/syslog/logger.rb, line 93 def self.syslog @@syslog end
Возвращает внутренний объект Syslog, который инициализируется при создании первого экземпляра.
# File ext/syslog/lib/syslog/logger.rb, line 100 def self.syslog= syslog @@syslog = syslog end
Указывает внутренний объект Syslog, который будет использоваться.
Публичные методы экземпляра
# 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 Почти дублирует #add. progname игнорируется.
# File ext/syslog/lib/syslog/logger.rb, line 156
Записывает message на уровне отладки (syslog debug), или записывает сообщение, возвращаемое из блока.
# File ext/syslog/lib/syslog/logger.rb, line 138
Записывает message на уровне ошибок (syslog warning), или записывает сообщение, возвращаемое из блока.
# File ext/syslog/lib/syslog/logger.rb, line 132
Записывает message на уровне fatal (syslog err), или записывает сообщение, возвращаемое из блока.
# File ext/syslog/lib/syslog/logger.rb, line 150
Записывает message на уровне информации (syslog info), или записывает сообщение, возвращаемое из блока.
# File ext/syslog/lib/syslog/logger.rb, line 126
Записывает message на уровне unknown (syslog alert), или записывает сообщение, возвращаемое из блока.
# File ext/syslog/lib/syslog/logger.rb, line 144
Записывает message на уровне warn (syslog notice), или записывает сообщение, возвращаемое из блока.
Ruby Core © 1993–2017 Yukihiro Matsumoto
Licensed under the Ruby License.
Ruby Standard Library © contributors
Licensed under their own licenses.