класс 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 используется для указания типа программы, которая регистрирует сообщение.
Форматировщик логов, как 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 может быть установлен для указания уровня 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 156
Регистрирует сообщение message на уровне отладки (syslog debug), или регистрирует сообщение, возвращаемое блоком.
# File ext/syslog/lib/syslog/logger.rb, line 138
Регистрирует сообщение message на уровне ошибки (syslog warning), или регистрирует сообщение, возвращаемое блоком.
# File ext/syslog/lib/syslog/logger.rb, line 132
Регистрирует сообщение message на уровне fatal (syslog err), или регистрирует сообщение, возвращаемое блоком.
# File ext/syslog/lib/syslog/logger.rb, line 150
Регистрирует сообщение message на уровне info (syslog info), или регистрирует сообщение, возвращаемое блоком.
# File ext/syslog/lib/syslog/logger.rb, line 126
Регистрирует сообщение message на уровне unknown (syslog alert), или регистрирует сообщение, возвращаемое блоком.
# 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.