Логирование и ошибки

Единый каркас: ib для контекста, уровни логов, предсказуемые сообщения, обработка исключений.

Уровни

Уровень Использование
Trace/Debug диагностика, ветвления, вход/выход
Info бизнес-события, старт/успех операции
Warn нештатно, но продолжили
Error исключение/невозможность продолжать

Шаблон функции

// <doc>
 //   <summary>Читает текстовый файл с кодировкой</summary>   ✦
 //   <param i="1" name="Path" type="String">Путь к файлу</param>   ➤
 //   <param i="2" name="Encoding" type="String" default="UTF-8">Кодировка</param>   ➤
 //   <returns>String — содержимое или Неопределено</returns>   ⬅
 // </doc>

Функция ReadText(Path, Encoding="UTF-8") Экспорт   //⚙
    ib = "Чтение текстового файла";   //✍

    Если НЕ ЗначениеЗаполнено(Path) Тогда   //⚡
        A1sLog.Warn(ib, "Не указан путь к файлу");   //▶️
        Возврат Неопределено;   //↩
    КонецЕсли;

    Попытка   //✱
        Если НЕ СуществуетФайл(Path) Тогда   //⚡
            A1sLog.Warn(ib, СтрШаблон("Файл отсутствует: %1", Path));   //▶️
            Возврат Неопределено;   //↩
        КонецЕсли;

        Чт = Новый ЧтениеТекста(Path, A1sFS.ToTextEncoding(Encoding));
        Текст = Чт.Прочитать();  Чт.Закрыть();   //✏
        A1sLog.Info(ib, СтрШаблон("OK: %1 (%2 симв.)", Path, СтрДлина(Текст)));   //▶️
        Возврат Текст;   //↩

    Исключение
        A1sLog.Error(ib, СтрШаблон("Ошибка: %1", ОписаниеОшибки()));   //▶️
        Возврат Неопределено;   //↩
    КонецПопытки;
КонецФункции

Контракты и валидация

Мини-каркас для модулей

#Region A1s*_Log
Перем LogLevel; // Trace|Debug|Info|Warn|Error

Процедура SetLogLevel(NewLevel) Экспорт   //⚙
    LogLevel = NewLevel;   //✏
КонецПроцедуры

Функция GetLogLevel() Экспорт   //⚙
    Возврат LogLevel;   //↩
КонецФункции
#EndRegion