Pre-loader

/ K2 Cloud ERP for PHP / Налагодження Stimulsoft звітів через кастомний Node.js-обгортку в Bash

Налагодження Stimulsoft звітів через кастомний Node.js-обгортку в Bash

Вступ

Під час інтеграції звітів Stimulsoft Reports у вебсистему, яка викликає серверний рендеринг через Node.js, часто виникає необхідність покращити налагодження або логування. Одним із рішень є заміна прямого виклику Node.js на кастомний Bash-скрипт, який дозволяє:

  • логувати всі запуски,
  • зберігати вхідні дані (stdin),
  • контролювати запуск Node.js із можливістю обробки помилок.

Це особливо корисно при використанні Stimulsoft Dashboards.JS на сервері, де важлива стабільність, безпека та трасування помилок.

Скрипт-заміна для Node.js

Нижче представлений Bash-скрипт, який встановлюється замість звичайного Node.js. Він забезпечує логування кожного виклику, перевірку наявності stdin, збереження вхідних параметрів, і делегування реального виконання до /usr/bin/node_real.

Вміст скрипта

#!/bin/bash

# === Конфігурація ===
LOGDIR="/var/log/nodejs"
TS=$(date +%s)
LOGFILE="$LOGDIR/command_$TS.log"
INFILE="$LOGDIR/stdin_$TS.json"

# === Підготовка каталогу ===
if [ ! -d "$LOGDIR" ]; then
  mkdir -p "$LOGDIR"
  chown $USER:www-data "$LOGDIR"
  chmod 775 "$LOGDIR"
fi

# === Перевірка наявності node_real ===
if [ ! -x /usr/bin/node_real ]; then
  echo "node_real не знайдено! Очікується /usr/bin/node_real" >&2
  exit 1
fi

# === Лог команди ===
echo "Node.js command: $@" | tee -a "$LOGFILE"

# === Перевірка на stdin ===
if [ -t 0 ]; then
  echo "Немає stdin (інтерактивний режим)" | tee -a "$LOGFILE"
  /usr/bin/node_real "$@" 2>&1 | tee -a "$LOGFILE"
else
  echo " Отримуємо stdin..." | tee -a "$LOGFILE"
  INPUT=$(cat)
  echo "$INPUT" > "$INFILE"
  echo "stdin збережено у $INFILE" | tee -a "$LOGFILE"
  echo "$INPUT" | /usr/bin/node_real "$@" 2>&1 | tee -a "$LOGFILE"
fi

Як працює цей підхід?

  1. Заміна Node.js:
    Ви перейменовуєте справжній Node.js до /usr/bin/node_real, а /usr/bin/node — це наш скрипт.
  2. Зберігання stdin:
    Весь вхідний JSON (зазвичай це дані Stimulsoft) зберігається у файл stdin_*.json. Це дозволяє відлагодити будь-які проблеми з вхідними параметрами або некоректними звітами.
  3. Лог кожного запуску:
    Створюється окремий лог-файл для кожного запуску з командою та результатами. Це значно полегшує аналіз збоїв.

Приклад використання в Stimulsoft

На сервері ваш скрипт буде викликатись автоматично через PHP (наприклад, через exec() або proc_open()), або фреймворком, який інкапсулює виклик Stimulsoft через Node.js. Ваш скрипт автоматично обробляє ці запити.

Переваги

✅ Повне логування кожного запиту
✅ Збереження вхідного JSON для подальшого аналізу
✅ Просте впровадження та обхід помилок у Stimulsoft
✅ Можливість налагодження та тестування без зміни основного коду

Висновок

Цей простий, але ефективний підхід дозволяє значно покращити якість підтримки та діагностики при роботі з серверною генерацією звітів у Stimulsoft через Node.js. Він особливо стане у пригоді в продуктивних середовищах, де кожна помилка коштує дорого.


    Runtime Site: 3.060995 s.