Spec-Zone.ru › Ruby 3.3

класс Syslog::Logger

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

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

По умолчанию Syslog::Logger использует имя программы ‘ruby’, но его можно изменить, передав первый аргумент в Syslog::Logger.new.

ВАЖНО! Вы можете установить имя программы Syslog::Logger только при первом инициализации Syslog::Logger. Это ограничение, связанное со способом использования syslog Syslog::Logger (и, в некотором смысле, ограничением работы 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 считается ошибкой для syslog(3).

VERSION

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

Атрибуты

facility[RW]

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

formatter[RW]

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

severity

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

time

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

progname

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

msg

Объект Object, переданный пользователем в сообщение лога; необязательно 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 debug), или записывает сообщение, возвращённое из блока.

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

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

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–2022 Yukihiro Matsumoto
Licensed under the Ruby License.
Ruby Standard Library © contributors
Licensed under their own licenses.

Spec-Zone.ru

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