For the complete documentation index, see llms.txt. This page is also available as Markdown.

Jak debugować skrypt

Gdy skrypt nie działa zgodnie z oczekiwaniami, szybka diagnoza pozwala wyeliminować problem na poziomie konfiguracji, danych wejściowych lub samego kodu logicznego.

Weryfikacja wstępna na formularzu

Zanim przejdziesz do analizy kodu i logów w Kibanie, upewnij się, że warunki wywołania skryptu na interfejsie użytkownika są prawidłowo skonfigurowane.

  1. Sprawdź warunek wywołania skryptu

    • Upewnij się, że warunek uruchomienia jest spełniony oraz że komponent, na którym zdefiniowany jest skrypt, prawidłowo nasłuchuje zdarzeń z komponentu wyzwalającego zmianę.

  2. Zweryfikuj parametry wejściowe

    • Sprawdź, czy parametry wejściowe zostały odpowiednio zmapowane z formularza oraz czy komponent odbierający dane posiada aktywne nasłuchiwanie.

  3. Zweryfikuj parametry wyjściowe

    • Upewnij się, że dane zwracane przez skrypt zostały prawidłowo przypisane do odpowiednich komponentów lub ich atrybutów.

Analiza kodu źródłowego w ScriptCode

Gdy weryfikacja na formularzu nie wykaże błędów, a skrypt nadal zwraca niespodziewane wyniki lub zgłasza błąd wykonania, kolejnym krokiem jest dokładny przegląd logiki w kodzie źródłowym.

Na co zwrócić uwagę podczas przeglądania kodu?

  1. Typy danych i formatowanie

    • Upewnij się, że operujesz na odpowiednich typach danych (np. konwersja ciągów znaków na liczby przed wykonaniem obliczeń, prawidłowe parsowanie danych zgodnie z ich formatem, w szczególności z uwzględnieniem separatorów tysięcy i części dziesiętnej w wartościach liczbowych).

    • Do weryfikacji typów złożonych możesz skorzystać z operatora instanceof.

  2. Obsługa brakujących danych (null / undefined)

    • Sprawdź, czy kod jest zabezpieczony na wypadek podania pustych parametrów wejściowych.

  3. Warunki brzegowe i logika biznesowa

    • Zweryfikuj instrukcje warunkowe (if/else) oraz pętle.

    • Sprawdź, czy zwracany obiekt lub struktura danych odpowiada dokładnie temu, czego oczekuje komponent na formularzu.

  4. Wstawianie tymczasowych logów diagnostycznych

    • Jeśli skrypt jest rozbudowany, warto w kluczowych miejscach dodać dodatkowe wpisy logujące zgodnie z Logowanie w ScriptCode.

Analiza logów w Kibanie

Gdy skrypt zgłasza błąd wykonania, zwraca niespodziewany wynik lub w ogóle się nie uruchamia, skorzystaj z Kibany. Narzędzie to umożliwia analizę logów aplikacyjnych i technicznych związanych z działaniem formularza w czasie rzeczywistym oraz dostarcza precyzyjnych informacji, które są niewidoczne z poziomu samego formularza.

Konfiguracja widoku i filtrowanie logów

Aby sprawnie odnaleźć właściwe zdarzenia, skonfiguruj podstawowe opcje wyszukiwania i filtry.

Ilustracja 1. Widok główny modułu Discover w aplikacji Kibana

Opcje wyszukiwania

  • Data view (Widok danych):

    • Logi aplikacyjne (np. eximee-<środowisko>-<nazwaBanku>) – podstawowy widok zawierający standardowe zdarzenia systemowe i komunikaty skryptów.

    • Logi danych wrażliwych (np. kafka_eximee_sensitive) – dedykowany indeks przeznaczony do śledzenia zdarzeń zawierających dane sensytywne.

  • Filtry środowiskowe:

    • log.environment – pozwala zawęzić logi do konkretnego środowiska (np. DEV, TEST, STAGE, PROD).

    • kubernetes.type – umożliwia wybór typu kontenera lub usługi (np. podział na ruch sensytywny i niesensytywny).

  • Zakres czasu (Date Select):

    • Relative (Względny) - Czas liczony wstecz od momentu analizy (np. Last 30 minutes – idealne podczas testowania na żywo).

    • Absolute (Bezwzględny) - Sztywno określony przedział czasowy od–do (np. od 04.12.2025 12:00 do 05.12.2025 07:30).

    • Wykres (Histogram) - Przedział czasowy możesz również zaznaczyć bezpośrednio na wykresie liczby logów, rozciągając zaznaczenie myszką nad listą wyników.

Opcje czytania logów

Po lewej stronie znajduje się panel z listą dostępnych filtrów. Wybierając ikonę (+) przy nazwie konkretnego filtra, dodasz go do widoku głównego w postaci czytelnej tabeli.

Ilustracja 2. Panel filtrowania zdarzeń i wyboru pól w Kibanie

Proponowane opcje przydatne do czytania logów:

Nazwa pola

Co pokazuje w logu?

timestamp

Czas rejestracji wpisu w logach z dokładnością do milisekund.

log.eximee.sessionToken

Unikalny token sesji wniosku/użytkownika w systemie Eximee. Pozwala odizolować cały ruch generowany przez jeden wniosek.

log.level

Poziom logu (INFO, DEBUG, WARN, ERROR, TRACE). Pozwala na szybkie odfiltrowanie błędów.

log.message

Właściwa treść komunikatu lub wyjścia ze skryptu. Pozwala na podgląd dokładnego stanu wykonania kodu oraz przetwarzanych danych.

log.stack_trace

Pełny ślad błędu (wyjątku systemowego). Wskazuje dokładną linię kodu oraz klasę, w której wystąpiła awaria.

log.data

Szczegółowy kontekst wykonania skryptu. Zawiera przekazane parametry wejściowe (inputs), zwracane wartości wyjściowe (outputs), zmienne kontekstowe oraz komunikaty diagnostyczne generowane bezpośrednio podczas pracy silnika skryptowego.

Dostępność poszczególnych pól i miejsce zapisania danych może różnić się w zależności od rodzaju logu i konfiguracji wdrożenia.

Poruszanie się po Kibanie

Najszybsze metody na zlokalizowanie szukanych zdarzeń to filtrowanie po:

  • Danych kontekstowych wniosku: numer wniosku, identyfikator klienta (CIF, NIK).

  • Nazwie skryptu / serwisu: nazwa konkretnego walidatora lub usługi.

  • Przedziale czasowym: dokładne okno czasowe akcji użytkownika.

  • Podzie na kontenery: wskazanie konkretnego kontenera aplikacyjnego.

Identyfikatory klientów (takie jak CIF czy NIK) stanowią dane sensytywne. W zależności od polityki bezpieczeństwa oraz konfiguracji maskowania logów na danym środowisku, filtrowanie bezpośrednio po CIF może być niedostępne lub ograniczone. W takich przypadkach zaleca się wyszukiwanie po identyfikatorze procesowym (np. numerze wniosku).

Przydatne zapytania KQL

Możesz także skorzystać z KQL (Kibana Query Language) w celu przeszukiwania logów i łączenia warunków operatorami AND lub OR.

Ilustracja 3. Pasek wyszukiwania z zapytaniem w języku KQL (Kibana Query Language)

Cel wyszukiwania

Zapytanie KQL

Błędy konkretnego skryptu

log.data: "nazwaSkryptu" AND log.level: "ERROR"

Logi dla konkretnego wniosku

log.message: "IdWniosku"

Wykluczenie logów informacyjnych

NOT log.level: "INFO"

Łączenie wielu poziomów logów

log.level: ("ERROR" OR "WARN")

Dostępność poszczególnych pól i miejsce zapisania danych może różnić się w zależności od rodzaju logu i konfiguracji wdrożenia.

Przykłady analizy logów w Kibanie

Wywołanie skryptu (ScriptCode)

Logi wyszukujemy w Kibanie po nazwie skryptu (korzystając z filtru log.data). Pozwala to prześledzić cały cykl wykonania: sprawdzić dane wejściowe, wynik wyjściowy, poprawność działania logiki biznesowej oraz wyliczone wartości.

  • Wejście do skryptu (parametry przekazane z formularza):

  • Wyjście ze skryptu (zwrócony wynik):

Ilustracja 4. Rejestracja wywołania skryptu wraz z parametrami wejściowymi i wynikiem

Wywołanie walidatora

Podobnie jak w przypadku skryptów, logi walidatorów filtrujemy po ich nazwie. Pozwala to podejrzeć przekazane dane wejściowe, kontekst wywołania oraz ewentualne komunikaty błędów.

  • Początek walidacji:

  • Zakończenie walidacji (zwrócona walidacja negatywna):

Ilustracja 5. Przebieg wywołania walidatora zakończony komunikatem błędu (walidacja negatywna)

Błędy wykonania skryptu

W przypadku wystąpienia nieobsłużonego wyjątku podczas wykonywania skryptu, w Kibanie rejestrowany jest błąd wykonania wraz ze ścieżką stosu (stack trace). Analizując wywołania kolejnych klas w stosie, możemy precyzyjnie zidentyfikować bezpośrednią przyczynę awarii — na przykład błąd matematyczny związany z dzieleniem przez zero:

Ilustracja 6. Logi prezentujące nieobsłużony wyjątek (stack trace)

Wykorzystanie poziomów logowania

Do tymczasowego śledzenia stanu aplikacji oraz weryfikacji wartości zmiennych w skryptach ScriptCode służy metoda Logger.info(...). Umożliwia ona zapisywanie komunikatów diagnostycznych w logach systemowych.

Ilustracja 7. Rejestracja wpisu diagnostycznego ze skryptu w Kibanie

Ostatnia aktualizacja

Czy to było pomocne?