Единый каркас: 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", ОписаниеОшибки())); //▶️
Возврат Неопределено; //↩
КонецПопытки;
КонецФункции
OK|WARN|ERR (по смыслу) — проще
искать в логах.Warn и возврат по
контракту (часто Неопределено).Исключение ... КонецПопытки без записи в лог.#Region A1s*_Log
Перем LogLevel; // Trace|Debug|Info|Warn|Error
Процедура SetLogLevel(NewLevel) Экспорт //⚙
LogLevel = NewLevel; //✏
КонецПроцедуры
Функция GetLogLevel() Экспорт //⚙
Возврат LogLevel; //↩
КонецФункции
#EndRegion