Я бачив методи, подібні до @ terdon's. Це початок того, що мови програмування вищого рівня називають реєстраторами, і пропонують як повноцінні бібліотеки, такі як log4J (Java), log4Perl (Perl) тощо.
Ви можете отримати щось подібне, використовуючи set -x
в Bash, як ви вже згадували, але ви можете використовувати це для підсилення налагодження лише підмножини команд, загортаючи блоки коду з ними так.
$ set -x; cmd1; cmd2; set +x
Приклади
Ось один шаблон вкладиша, який ви можете використовувати.
$ set -x; echo "hi" ;set +x
+ echo hi
hi
+ set +x
Ви можете їх обернути таким чином для декількох команд у сценарії.
set -x
cmd1
cmd2
set +x
cmd3
Log4Bash
Більшість людей не звертає уваги, але Bash також має log4 *, Log4Bash . Якщо у вас є більш скромні потреби, можливо, це варто того часу, щоб його налаштувати.
log4bash - це спроба покращити журнал для сценаріїв Bash (тобто зробити журнал у Bash менше, ніж).
Приклади
Ось кілька прикладів використання log4bash.
#!/usr/bin/env bash
source log4bash.sh
log "This is regular log message... log and log_info do the same thing";
log_warning "Luke ... you turned off your targeting computer";
log_info "I have you now!";
log_success "You're all clear kid, now let's blow this thing and go home.";
log_error "One thing's for sure, we're all gonna be a lot thinner.";
# If you have figlet installed -- you'll see some big letters on the screen!
log_captains "What was in the captain's toilet?";
# If you have the "say" command (e.g. on a Mac)
log_speak "Resistance is futile";
Log4sh
Якщо ви хочете, що я б класифікував як більшу потужність рамки log4 *, я б спробував Log4sh .
витяг
log4sh спочатку був розроблений, щоб вирішити проблему ведення журналів у мене в деяких виробничих середовищах, в яких я працював, де у мене було або занадто багато журналу, або недостатньо. Зокрема, Cron завдав мені найбільших головних болів через їх постійні та дратівливі електронні листи, в яких говорилося, що все працює, або що нічого не працює, але не детальна причина. Зараз я використовую log4sh в середовищах, де вхід із скриптів оболонки є критичним, але там, де мені потрібно більше, ніж просто просте "Привіт, виправте мене!" тип повідомлення журналу. Якщо вам подобається те, що ви бачите, або є якісь пропозиції щодо вдосконалень, не соромтесь надіслати мені електронний лист. Якщо буде достатньо інтересу до проекту, я буду його розвивати далі.
log4sh був розроблений під оболонкою Bourne Again (/ bin / bash) в Linux, але велика увага була зроблена, щоб переконатися, що він працює під стандартною оболонкою Bourne Solaris (/ bin / sh), оскільки це відбувається в основному виробництві платформа, якою я користувався.
Log4sh підтримує декілька оболонок, не тільки Bash.
- Борн Шелл (ш)
- BASH - GNU Bourne Again SHell (удар)
- DASH (тире)
- Корн Шелл (кш)
- pdksh - оболонка Korn для публічного домену (pdksh)
Його також перевіряли на декількох ОС, а не лише на Linux.
- Cygwin (під Windows)
- FreeBSD (підтримується користувачем)
- Linux (Gentoo, RedHat, Ubuntu)
- Mac OS X
- Соляріс 8, 9, 10
Використання рамки log4 * займе певний час для вивчення, але воно того варте, якщо у вас є більш вимогливі потреби вашої реєстрації. Log4sh використовує файл конфігурації, де ви можете визначити додатки та керувати форматуванням виводу, який з’явиться.
Приклад
#! /bin/sh
#
# log4sh example: Hello, world
#
# load log4sh (disabling properties file warning) and clear the default
# configuration
LOG4SH_CONFIGURATION='none' . ./log4sh
log4sh_resetConfiguration
# set the global logging level to INFO
logger_setLevel INFO
# add and configure a FileAppender that outputs to STDERR, and activate the
# configuration
logger_addAppender stderr
appender_setType stderr FileAppender
appender_file_setFile stderr STDERR
appender_activateOptions stderr
# say Hello to the world
logger_info 'Hello, world'
Тепер, коли я запускаю його:
$ ./log4sh.bash
INFO - Hello, world
ПРИМІТКА . Вищеописане налаштовує додаток як частину коду. Якщо вам це подобається, ви можете витягнути його з власного файлу log4sh.properties
тощо.
Зверніться до чудової документації для Log4sh, якщо вам потрібні додаткові деталі.
set -v
виводу ви хочете, а які - ні.