класс 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)'
Также можно установить уровень объекта, который будет использоваться:
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 для
LoggerRuby считается ошибкой для syslog(3). - VERSION
-
Версия
Syslog::Logger, которую вы используете.
Атрибуты
Аргумент facility используется для указания типа программы, которая регистрирует сообщение.
Форматтер для логов, как Proc, который примет четыре аргумента и вернёт отформатированное сообщение. Аргументы:
-
severity -
Уровень серьезности сообщения лога.
-
time -
Объект
Time, представляющий время регистрации сообщения. -
progname -
Настроенное имя программы progname или переданное в метод logger.
-
msg -
Объект, переданный пользователем в сообщение лога; необязательно
String.
Блок должен вернуть Object, который можно записать в устройство регистрации с помощью write. Используется стандартный форматтер, если он не задан.
Уровень логов для совместимости с Logger.
Публичные методы класса
# 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.
# 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 может быть выбрано только одно имя программы.
# File ext/syslog/lib/syslog/logger.rb, line 93 def self.syslog @@syslog end
Возвращает внутренний объект Syslog, который инициализируется при создании первого экземпляра.
# File ext/syslog/lib/syslog/logger.rb, line 100 def self.syslog= syslog @@syslog = syslog end
Устанавливает внутренний объект Syslog для использования.
Публичные методы экземпляра
# 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 игнорируется.
# File ext/syslog/lib/syslog/logger.rb, line 151
Регистрирует message на уровне отладки (syslog debug) или регистрирует сообщение, возвращённое из блока.
# File ext/syslog/lib/syslog/logger.rb, line 133
Регистрирует message на уровне ошибки (syslog warning) или регистрирует сообщение, возвращённое из блока.
# File ext/syslog/lib/syslog/logger.rb, line 127
Регистрирует message на уровне критической ошибки (syslog err) или регистрирует сообщение, возвращённое из блока.
# File ext/syslog/lib/syslog/logger.rb, line 145
Регистрирует message на уровне информации (syslog info) или регистрирует сообщение, возвращённое из блока.
# File ext/syslog/lib/syslog/logger.rb, line 121
Регистрирует message на уровне неизвестной ошибки (syslog alert) или регистрирует сообщение, возвращённое из блока.
# 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.