Spec-Zone.ru › Ruby 2.4

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

Также можно установить параметр 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 и отправьте сигнал HUP syslogd (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

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

Блок должен возвращать объект, который можно записать в устройство ведения журнала с помощью 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 "      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 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 warning), или записывает сообщение, возвращаемое из блока.

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

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

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

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

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

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

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

Записывает 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