Spec-Zone.ru › Ruby 3

класс Syslog::Logger

Родитель:
Объект

Syslog::Logger — это аналог Logger, который регистрирует данные через syslog вместо файла. Вы можете использовать Syslog::Logger для агрегирования логов между несколькими машинами.

По умолчанию Syslog::Logger использует имя программы 'ruby', но это можно изменить, передав первый аргумент в Syslog::Logger.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)'

Также можно задать уровень объекта, который будет использоваться:

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 (killall -HUP syslogd на FreeBSD) в syslogd.

Если вы хотите автоматическое создание резервных копий и архивацию логов, см. страницы руководства newsyslog.conf(5) и newsyslog(8).

Константы

LEVEL_MAP

Сопоставление типов предупреждений Logger с типами предупреждений syslog(3).

Сообщения от приложений Ruby не считаются критическими, как сообщения других системных демонов, использующих syslog(3), поэтому большинство сообщений уменьшаются на один уровень. Например, сообщение об ошибке для Logger Ruby считается предупреждением syslog(3).

VERSION

Версия используемого Syslog::Logger.

Атрибуты

facility[RW]

Аргумент facility используется для указания типа программы, которая регистрирует сообщение.

formatter[RW]

Форматтер для регистрации, являющийся Proc, который принимает четыре аргумента и возвращает отформатированное сообщение. Аргументы:

severity

Уровень серьезности сообщения журнала.

time

Экземпляр Time, представляющий время записи сообщения.

progname

Настроенное имя программы progname или переданное в метод logger.

msg

Объект, переданный пользователем в сообщение журнала; не обязательно String.

Блок должен вернуть Object, который можно записать в устройство регистрации с помощью write. По умолчанию используется стандартный форматтер.

level[RW]

Уровень журнала для совместимости с Logger.

Открытые методы класса

make_methods(meth) Показать исходный код
# File ext/syslog/lib/syslog/logger.rb, line 107
  def self.make_methods meth
    level = ::Logger.const_get(meth.upcase)
    eval <<-EOM, nil, __FILE__, __LINE__ + 1
      def #{meth}(message = nil, &block)
        add(#{level}, message, &block)
      end

      def #{meth}?
        level <= #{level}
      end
    EOM
  end

Создает методы для уровня meth.

new(program_name = 'ruby', facility = nil) Показать исходный код
# 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 может быть задан для указания уровня объекта, который будет использоваться.

Из-за особенностей работы syslog может быть выбрано только одно имя программы.

syslog() Показать исходный код
# File ext/syslog/lib/syslog/logger.rb, line 93
def self.syslog
  @@syslog
end

Возвращает внутренний объект Syslog, который инициализируется при создании первого экземпляра.

syslog=(syslog) Показать исходный код
# File ext/syslog/lib/syslog/logger.rb, line 100
def self.syslog= syslog
  @@syslog = syslog
end

Устанавливает внутренний объект Syslog, который будет использоваться.

Открытые методы экземпляра

add(severity, message = nil, progname = nil, &block) Показать исходный код
# 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

Почти дублирует Logger#add. progname игнорируется.

debug() Показать исходный код
# File ext/syslog/lib/syslog/logger.rb, line 151
  

Регистрирует message на уровне отладки (отладка syslog) или регистрирует сообщение, возвращенное из блока.

error() Показать исходный код
# File ext/syslog/lib/syslog/logger.rb, line 133
  

Регистрирует message на уровне ошибки (предупреждение syslog) или регистрирует сообщение, возвращенное из блока.

fatal() Показать исходный код
# File ext/syslog/lib/syslog/logger.rb, line 127
  

Регистрирует message на уровне критической ошибки (syslog err) или регистрирует сообщение, возвращенное из блока.

info() Показать исходный код
# File ext/syslog/lib/syslog/logger.rb, line 145
  

Регистрирует message на уровне информации (syslog info) или регистрирует сообщение, возвращенное из блока.

unknown() Показать исходный код
# File ext/syslog/lib/syslog/logger.rb, line 121
  

Регистрирует message на уровне неизвестной ошибки (syslog alert) или регистрирует сообщение, возвращенное из блока.

warn() Показать исходный код
# File ext/syslog/lib/syslog/logger.rb, line 139
  

Регистрирует message на уровне предупреждения (syslog notice) или регистрирует сообщение, возвращенное из блока.

Ruby Core © 1993–2017 Yukihiro Matsumoto
Licensed under the Ruby License.
Ruby Standard Library © contributors
Licensed under their own licenses.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API