Spec-Zone.ru › Ruby 2.3

class Syslog::Logger

Parent:
Объект

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[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 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.

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 можно установить для указания уровня логирования (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

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

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

Записывает message на уровне отладки (syslog debug), или записывает сообщение, возвращаемое из блока.

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

Записывает message на уровне ошибок (syslog warning), или записывает сообщение, возвращаемое из блока.

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

Записывает message на уровне fatal (syslog err), или записывает сообщение, возвращаемое из блока.

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

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

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

Записывает message на уровне unknown (syslog alert), или записывает сообщение, возвращаемое из блока.

warn() Показать исходный код
# 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.

Spec-Zone.ru

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