Список пакетов

Логирование в стиле log4j

Библиотека предназначена для удобного вывода сообщений в привязке к их "уровням важности"

Функционал logos не повторяет полностью log4j, а, скорее, берет из него какие-то аспекты поведения.

Использование

Именованные журналы сообщений (Логи)

Каждый лог имеет собственное имя, по которому он может быть идентифицирован. Имена логов глобально видимы и любой из них может быть получен по имени лога.

Для того, чтобы начать логирование, требуется вызвать метод ПолучитьЛог модуля Логирование

Лог = Логирование.ПолучитьЛог("oscript.app.messages");

Соглашение об именовании

Принята следующая схема именования логов:

область.класс_приложения.имя_лога
  • Область - это произвольное имя, определяющее некую совокупность возможных логов. Часто, в качестве области используется имя поставщика приложения, либо имя набора библиотек. Для всех пакетов, входящих в oscript-library используется имя области "oscript". Приложения, создаваемые, например, в рамках гипотетического проекта "Аврора" могут использовать область "aurora".
  • Класс_приложения - это разделитель на тип модуля - библиотека, или приложение. Например, библиотечный пакет "cmdline" использует класс lib, а консольное приложение "gitsync" - класс 'app'
  • Имя_лога - это, собственно, идентификатор журнала.

Примечание

В отличие от log4j логи в logos не являются иерархическими, но в перспективе могут стать таковыми.

Уровни логирования

Существует 5 уровней важности сообщений:

  • Отладка
  • Информация
  • Предупреждение
  • Ошибка
  • Критичная ошибка

Для каждого из уровней logos предоставляет отдельный метод, который выводит сообщение с данным уровнем важности. В процессе эксплуатации приложения для каждого из логов можно устанавливать уровень выводимых сообщений. Например, если установлен уровень "Предупреждение", то выводиться будут только предупреждения или более важные сообщения (Ошибка, КритичнаяОшибка)

Лог.УстановитьУровень(УровниЛога.Отладка) // выводить все, в т.ч. отладочные сообщения

По умолчанию установлен уровень "Информация".

Пример использования

Лог = Логирование.ПолучитьЛог("oscript.test.levels");
Лог.УстановитьУровень(УровниЛога.Ошибка);
Лог.Отладка("Переменная А = 7");
Лог.Информация("Переменная А = 7");    
Лог.Ошибка("Неверно указан путь к файлу!");

Способы вывода (appenders)

Приложение выводит сообщения в лог, а сам лог может выводиться в произвольное место. За конкретную реализацию вывода отвечает Способ вывода. В Log4j это называется appender.

В составе logos поставляется 2 способа вывода - в консоль и в файл. Причем, способы вывода - это список, т.е. лог может писаться в несколько мест одновременно.

ФайлЖурнала = Новый ВыводЛогаВФайл
ФайлЖурнала.ОткрытьФайл("/var/log/oscript.test.log");
Лог.ДобавитьСпособВывода(ФайлЖурнала);
Лог.Информация("Это строка лога");
Лог.Закрыть(); // при включении логирования в файл рекомендуется закрывать лог.

Особенности добавления Способов вывода

При создании лога в него автоматически будет добавлен способ вывода ВыводЛогаВКонсоль. Однако, если вручную в лог будет добавлен другой способ вывода, то "автоспособ" будет удален. Иными словами, пример кода выше будет писать только в файл, т.к. консольный вывод при ручном добавлении способа вывода будет отключен.

Форматирование сообщений

За форматирование выводимых сообщений отвечает Раскладка. Раскладка по умолчанию форматирует сообщения следующим образом:

УРОВЕНЬСООБЩЕНИЯ - ТекстСообщения

Раскладка - это класс, реализующий метод Форматировать(Знач Уровень, Знач Сообщение). Установить собственную раскладку можно методом "УстановитьРаскладку".

Функция Форматировать(Знач Уровень, Знач Сообщение) Экспорт

    Возврат СтрШаблон("%1: %2 - %3", ТекущаяДата(), УровниЛога.НаименованиеУровня(Уровень), Сообщение);

КонецФункции

Лог.УстановитьРаскладку(ЭтотОбъект);

В приведенной раскладке в сообщение помимо уровня и текста будет добавлено текущая дата.