Logowanie w ScriptCode
Dostępne metody logowania
W środowisku ScriptCode dostępny jest obiekt Logger, który umożliwia logowanie zdarzeń i danych z poziomu skryptu.
Dostępne metody logowania:
function callService(context) {
Logger.info('COMPLETE TASK EXECUTED [arg1={}, arg2={}]', 'arg1', 'arg2');
Logger.debug('COMPLETE TASK EXECUTED [arg1={}, arg2={}]', 'arg1', 'arg2');
Logger.warn('COMPLETE TASK EXECUTED [arg1={}, arg2={}]', 'arg1', 'arg2');
Logger.error('COMPLETE TASK EXECUTED [arg1={}, arg2={}]', 'arg1', 'arg2');
Logger.trace('COMPLETE TASK EXECUTED [arg1={}, arg2={}]', 'arg1', 'arg2');
}Wybór poziomu logowania
W ScriptCode używaj przede wszystkim poziomu INFO. Najważniejsze błędy i wyjątki są logowane automatycznie przez mechanizmy platformy.
Poziom
Zasada użycia w ScriptCode
INFO
Domyślny poziom logowania. Używaj do informacji diagnostycznych i biznesowych potrzebnych do prześledzenia działania skryptu.
WARN
Używaj tylko w uzasadnionych przypadkach. Przeznaczone dla istotnych i nietypowych sytuacji wymagających analizy.
ERROR
Nie używaj w ScriptCode. Błędy wymagające logowania na poziomie ERROR są obsługiwane i logowane przez platformę.
DEBUG, TRACE
Używaj do szczegółowej diagnostyki podczas developmentu. Logi te nie są dostępne na środowiskach testowych i produkcyjnych.
Wyjątki biznesowe
W ScriptCode wywołuj błędy biznesowe za pomocą mechanizmów platformy: Błędy biznesowe.
Jeżeli skrypt rzuca wyjątek biznesowy, platforma automatycznie loguje jego wystąpienie na poziomie WARN. Nie loguj tego samego zdarzenia dodatkowo za pomocą Logger.warn() ani Logger.error().
Logowanie w blokach try/catch
W blokach try/catch używaj przede wszystkim poziomu INFO.
Poziomu WARN użyj tylko wtedy, gdy przechwycona sytuacja jest na tyle istotna i nietypowa, że wymaga późniejszej analizy.
Domyślnie logowane dane
Platforma Eximee automatycznie loguje i traktuje jako sensytywne następujące elementy środowiska ScriptCode:
dane wejściowe formularzy (
input),dane wyjściowe (
output),treść żądań (
request) wysyłanych do usług zewnętrznych, np. przez REST API,treść odpowiedzi (
response) otrzymywanych z tych usług.
Dane te nie są wypisywane w logach niesensytywnych w sposób umożliwiający odczytanie ich rzeczywistej zawartości. Zostają zastąpione znacznikami _SENSITIVE_DATA_START_ ... _SENSITIVE_DATA_STOP_ lub #hashed#, w zależności od typu aplikacji i kontekstu wykonania.
Logowanie sensytywne i niesensytywne
Jeśli chcemy, aby część danych została wypisana w logach niesensytywnych bez maskowania, należy użyć metody nonsensitive(), która oznacza przekazany argument jako niesensytywny.
Przykład:
W tym przykładzie:
arg1zostanie zapisany w logu w formie jawnej,arg2zostanie ukryty (zastąpiony przez znacznik danych sensytywnych).
Używaj
nonsensitive()tylko wtedy, gdy masz pewność, że przekazana wartość nie zawiera danych wrażliwych. Jeżeli masz wątpliwości, pozostaw wartość jako sensytywną.
Format logów
Poniżej przedstawiono przykłady formatów logów dla różnych aplikacji platformy Eximee.
Aplikacja process-handlers
Aplikacja webforms
Dobre praktyki
Do logowania w ScriptCode używaj wyłącznie obiektu
Logger.Domyślnie używaj poziomu
INFO.Poziomu
WARNużywaj bardzo rzadko i tylko dla istotnych, nietypowych sytuacji wymagających analizy.Nie używaj
Logger.error()- błędy na poziomieERRORloguje platforma.Nie loguj ponownie danych wejściowych, wyjściowych, requestów ani response'ów, jeżeli platforma już je loguje.
Nie loguj ponownie wyjątków biznesowych.
Używaj
nonsensitive()tylko dla danych, co do których masz pewność, że nie są wrażliwe.Unikaj logowania całych obiektów, dużych struktur danych i informacji, które nie są potrzebne do diagnostyki.
Ostatnia aktualizacja
Czy to było pomocne?
