класс 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 для
LoggerRuby считается ошибкой для syslog(3). - VERSION
-
Версия используемого
Syslog::Logger.
Атрибуты
Аргумент facility используется для указания типа программы, которая записывает сообщение.
Форматировщик логов, являющийся Proc, который принимает четыре аргумента и возвращает отформатированное сообщение. Аргументами являются:
-
severity -
Уровень важности сообщения лога.
-
time -
Объект
Time, представляющий время записи сообщения. -
progname -
Настроенное имя программы progname или переданное методу logger.
-
msg -
Объект Object, переданный пользователем в сообщение лога; необязательно
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.