Spec-Zone.ru › Ruby 2.6

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

Также можно установить значение параметра 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 для Ruby's Logger считается сообщением error для 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 может быть установлен для указания уровня 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 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 на уровне info (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