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. Domyślnie wszystkie argumenty przekazane do metod Logger.<method>() są traktowane jako sensytywne, czyli potencjalnie zawierające dane wrażliwe.

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');
}

Wszystkie argumenty powyższych metod są automatycznie traktowane jako dane sensytywne i w logach niesensytywnych zostaną ukryte.

Domyślnie logowane dane

Platforma Eximee domyślnie loguję oraz 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.

Oznacza to, że nawet jeśli nie zostaną one jawnie oznaczone jako sensytywne w kodzie, nie będą wypisywane w logach niesensytywnych w sposób umożliwiający odczytanie rzeczywistej zawartości. Zostaną 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:

Logger.info(
    'COMPLETE TASK EXECUTED [arg1={}, arg2={}]',
    nonsensitive('arg1 nonsensitive test'),
    'arg2'
);

W tym przykładzie:

  • arg1 zostanie zapisany w logu w formie jawnej,

  • arg2 zostanie ukryty (zastąpiony przez znacznik danych sensytywnych).


Format logów

Poniżej przedstawiono przykłady formatów logów dla różnych aplikacji platformy Eximee.

Aplikacja process-handlers

2023-07-20 11:52:07.130 CEST [pb=csadas21312das][pi=149e3ba0-26e3-11ee-8889-927e393a9856][pd=script_code_handler_test_process][sn=process-handler-complete-task][pt=eximeeScriptCodeTask][sci=a919bbb6-1dea-4044-a5ca-ee5f2f0c55ad][TopicSubscriptionManager] INFO  c.c.r.e.l.JavascriptLibraryLoader - Loading javascript libraries from directory=_SENSITIVE_DATA_START_._SENSITIVE_DATA_STOP_

2023-07-20 11:52:07.162 CEST [pb=csadas21312das][pi=149e3ba0-26e3-11ee-8889-927e393a9856][pd=script_code_handler_test_process][sn=process-handler-complete-task][pt=eximeeScriptCodeTask][sci=a919bbb6-1dea-4044-a5ca-ee5f2f0c55ad][TopicSubscriptionManager] INFO  c.c.e.s.logging.JavaScriptLoggerImpl - COMPLETE TASK EXECUTED [arg1=arg1 nonsensitive test, arg2=_SENSITIVE_DATA_START_arg2_SENSITIVE_DATA_STOP_]

2023-07-20 11:52:07.163 CEST [pb=csadas21312das][pi=149e3ba0-26e3-11ee-8889-927e393a9856][pd=script_code_handler_test_process][sn=process-handler-complete-task][pt=eximeeScriptCodeTask][sci=a919bbb6-1dea-4044-a5ca-ee5f2f0c55ad][TopicSubscriptionManager] WARN  c.c.e.s.logging.JavaScriptLoggerImpl - COMPLETE TASK EXECUTED [arg1=_SENSITIVE_DATA_START_arg1_SENSITIVE_DATA_STOP_, arg2=_SENSITIVE_DATA_START_arg2_SENSITIVE_DATA_STOP_]

2023-07-20 11:52:07.163 CEST [pb=csadas21312das][pi=149e3ba0-26e3-11ee-8889-927e393a9856][pd=script_code_handler_test_process][sn=process-handler-complete-task][pt=eximeeScriptCodeTask][sci=a919bbb6-1dea-4044-a5ca-ee5f2f0c55ad][TopicSubscriptionManager] ERROR c.c.e.s.logging.JavaScriptLoggerImpl - COMPLETE TASK EXECUTED [arg1=_SENSITIVE_DATA_START_arg1_SENSITIVE_DATA_STOP_, arg2=_SENSITIVE_DATA_START_arg2_SENSITIVE_DATA_STOP_]

Aplikacja webforms

2023-07-20 16:15:27,489 CEST [MK_1611202307201615273] [] [http-nio-8082-exec-36] INFO  c.c.e.s.l.l.JavaScriptLoggerImpl - COMPLETE TASK EXECUTED [arg1=arg1 nonsensitive test, arg2=#hashed#]

2023-07-20 16:15:27,490 CEST [MK_1611202307201615273] [] [http-nio-8082-exec-36] WARN  c.c.e.s.l.l.JavaScriptLoggerImpl - COMPLETE TASK EXECUTED [arg1=#hashed#, arg2=#hashed#]

2023-07-20 16:15:27,490 CEST [MK_1611202307201615273] [] [http-nio-8082-exec-36] ERROR c.c.e.s.l.l.JavaScriptLoggerImpl - COMPLETE TASK EXECUTED [arg1=#hashed#, arg2=#hashed#]

Dobre praktyki

  • Używaj nonsensitive() tylko wtedy, gdy masz pewność, że dane nie zawierają informacji wrażliwych.

  • Stosuj odpowiedni poziom logowania:

    • trace i debug – do analizy szczegółów działania skryptu,

    • info – dla komunikatów o przebiegu procesu,

    • warn – dla sytuacji nietypowych, ale niekrytycznych,

    • error – dla błędów wymagających interwencji.

  • Unikaj logowania całych obiektów lub dużych struktur danych.

Last updated

Was this helpful?