Під час інтеграції звітів Stimulsoft Reports у вебсистему, яка викликає серверний рендеринг через Node.js, часто виникає необхідність покращити налагодження або логування. Одним із рішень є заміна прямого виклику Node.js на кастомний Bash-скрипт, який дозволяє:
stdin
),Це особливо корисно при використанні Stimulsoft Dashboards.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
/usr/bin/node_real
, а /usr/bin/node
— це наш скрипт.
stdin
:Stimulsoft
) зберігається у файл stdin_*.json
. Це дозволяє відлагодити будь-які проблеми з вхідними параметрами або некоректними звітами.
На сервері ваш скрипт буде викликатись автоматично через PHP (наприклад, через exec()
або proc_open()
), або фреймворком, який інкапсулює виклик Stimulsoft через Node.js. Ваш скрипт автоматично обробляє ці запити.
✅ Повне логування кожного запиту
✅ Збереження вхідного JSON для подальшого аналізу
✅ Просте впровадження та обхід помилок у Stimulsoft
✅ Можливість налагодження та тестування без зміни основного коду
Цей простий, але ефективний підхід дозволяє значно покращити якість підтримки та діагностики при роботі з серверною генерацією звітів у Stimulsoft через Node.js. Він особливо стане у пригоді в продуктивних середовищах, де кожна помилка коштує дорого.