bslls:UsageWriteLogEvent¶
Неверное использование метода "ЗаписьЖурналаРегистрации" (UsageWriteLogEvent)¶
- Тип: Дефект кода
- Важность: Информационный
- Включена по умолчанию: Да
- Теги:
standard,badpractice
Описание диагностики¶
Важно правильно с определенной дотошностью указывать основные параметры при записи в Журнал регистрации.
Недопустимо прятать исключения.
При обработке исключений обязательно нужно выполнять запись в журнал регистрации с полным представлением ошибки.
Для этого нужно добавить в комментарий события результат ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())
Нельзя пропускать 2й параметр Уровень журнала регистрации. Если его не указать, по умолчанию 1С применит уровень ошибки Информация, и данная запись может потеряться в потоке записей.
Нельзя пропускать и 5й параметр - комментарий к событию записи в журнал регистрации.
Примеры¶
Примеры неверного кода
ЗаписьЖурналаРегистрации("Событие");// ошибка
ЗаписьЖурналаРегистрации("Событие", УровеньЖурналаРегистрации.Ошибка);// ошибка
ЗаписьЖурналаРегистрации("Событие", УровеньЖурналаРегистрации.Ошибка, , );// ошибка
ЗаписьЖурналаРегистрации("Событие", , , , ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
ЗаписьЖурналаРегистрации("Событие", УровеньЖурналаРегистрации.Ошибка, , , );// ошибка
Попытка
КодСервер();
Исключение
ЗаписьЖурналаРегистрации("Событие", УровеньЖурналаРегистрации.Ошибка, , ,
ОписаниеОшибки()); // ошибка
ЗаписьЖурналаРегистрации("Событие", УровеньЖурналаРегистрации.Ошибка, , ,
"Комментарий 1"); // ошибка
КонецПопытки;
Правильный код
Попытка
КодСервер();
Исключение
ТекстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
ЗаписьЖурналаРегистрации(НСтр("ru = 'Выполнение операции'"), УровеньЖурналаРегистрации.Ошибка, , ,
ТекстОшибки);
КонецПопытки;
Попытка
КодСервер();
Исключение
ТекстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
ЗаписьЖурналаРегистрации(НСтр("ru = 'Выполнение операции'"), УровеньЖурналаРегистрации.Ошибка, , ,
ТекстОшибки);
ВызватьИсключение;
КонецПопытки;
Процедура ЗагрузитьДанные() Экспорт
Попытка
ВыполнитьЗаписьДанных();
Исключение
ЗаписьЖурналаРегистрации(); // <- исключение подавляется с записью в ЖР
КонецПопытки;
КонецПроцедуры
Процедура ВыполнитьЗаписьДанных()
НачатьТранзакцию();
Попытка
// ...
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ВызватьИсключение; // <- вложенная попытка, запись в ЖР не требуется
КонецПопытки;
КонецПроцедуры
Источники¶
Соответствие стандартам¶
- #std498, п. 2.2: Использование Журнала регистрации — Диагностика «Неверное использование метода "ЗаписьЖурналаРегистрации" (UsageWriteLogEvent)» проверяет условие пункта 2.2 стандарта std498.
- #std498, п. 2.3: Использование Журнала регистрации — Диагностика «Неверное использование метода "ЗаписьЖурналаРегистрации" (UsageWriteLogEvent)» проверяет условие пункта 2.3 стандарта std498.
- #std499, п. 2.2: Перехват исключений в коде — Диагностика «Неверное использование метода "ЗаписьЖурналаРегистрации" (UsageWriteLogEvent)» проверяет условие пункта 2.2 стандарта std499.
Источник диагностики¶
- Исходная статья
- Ревизия:
f4616cda8a216789ee40529ed857e614b9e2ea25 - Лицензия:
LGPL-3.0-or-later