Spec-Zone.ru › Ruby 2.5

класс 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)'

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

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

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

Константы

LEVEL_MAP

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

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

VERSION

Версия Syslog::Logger, которую вы используете.

Атрибуты

facility[RW]

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

formatter[RW]

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

severity

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

time

Объект Time, представляющий момент регистрации сообщения.

progname

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

msg

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

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

level[RW]

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

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

make_methods(meth) Показать исходный код
# File ext/syslog/lib/syslog/logger.rb, line 106
  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 190
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 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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