Widziałem stosowane metody podobne do @ terdona. To początki tego, które języki programowania wyższego poziomu wywołują rejestratory i oferują jako pełnowymiarowe biblioteki, takie jak log4J (Java), log4Perl (Perl) itp.
Możesz dostać coś podobnego używając set -x
Bash, jak wspomniałeś, ale możesz go użyć, aby podkręcić debugowanie tylko podzbioru poleceń, owijając nimi bloki kodu.
$ set -x; cmd1; cmd2; set +x
Przykłady
Oto jeden wzór wkładki, którego możesz użyć.
$ set -x; echo "hi" ;set +x
+ echo hi
hi
+ set +x
Możesz owinąć je w ten sposób dla wielu poleceń w skrypcie.
set -x
cmd1
cmd2
set +x
cmd3
Log4Bash
Większość ludzi jest nieświadoma, ale Bash ma również log4 *, Log4Bash . Jeśli masz bardziej skromne potrzeby, warto poświęcić czas na ich skonfigurowanie.
log4bash to próba lepszego rejestrowania skryptów Bash (tzn. ograniczenie logowania Bash do minimum).
Przykłady
Oto kilka przykładów użycia 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
Jeśli chcesz czegoś, co sklasyfikowałbym jako więcej pełnej mocy frameworka log4 *, dałbym Log4sh szansę.
fragment
log4sh został pierwotnie opracowany, aby rozwiązać problem z logowaniem, który miałem w niektórych środowiskach produkcyjnych, w których pracowałem, w których albo miałem za dużo, albo za mało. Zwłaszcza praca w firmie Cron sprawiła mi najwięcej bólu głowy dzięki ciągłym i irytującym e-mailom informującym, że wszystko działa lub że nic nie działa, ale nie szczegółowy powód. Teraz używam log4sh w środowiskach, w których logowanie ze skryptów powłoki ma kluczowe znaczenie, ale gdzie potrzebuję czegoś więcej niż zwykłego „Cześć, napraw mnie!” rodzaj wiadomości rejestrującej. Jeśli podoba Ci się to, co widzisz lub masz sugestie dotyczące ulepszeń, napisz do mnie e-maila. Jeśli zainteresowanie projektem będzie wystarczające, będę go dalej rozwijać.
log4sh został opracowany pod powłoką Bourne Again Shell (/ bin / bash) w systemie Linux, ale dołożono wszelkich starań, aby działał pod domyślną powłoką Bourne'a w systemie Solaris (/ bin / sh), ponieważ jest to podstawowa produkcja platforma używana przeze mnie.
Log4sh obsługuje kilka powłok, nie tylko Bash.
- Bourne Shell (sh)
- BASH - GNU Bourne Again SHell (bash)
- DASH (myślnik)
- Korn Shell (ksh)
- pdksh - Public Domain Korn Shell (pdksh)
Został również przetestowany na kilku systemach operacyjnych, nie tylko na Linuksie.
- Cygwin (pod Windows)
- FreeBSD (obsługiwany przez użytkownika)
- Linux (Gentoo, RedHat, Ubuntu)
- Mac OS X
- Solaris 8, 9, 10
Korzystanie z frameworka log4 * zajmie trochę czasu, ale warto, jeśli masz bardziej wymagające potrzeby związane z logowaniem. Log4sh korzysta z pliku konfiguracyjnego, w którym można zdefiniować programy dołączające i kontrolować formatowanie wyświetlanych danych wyjściowych.
Przykład
#! /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'
Teraz kiedy go uruchomię:
$ ./log4sh.bash
INFO - Hello, world
UWAGA: Powyższe konfiguruje program dołączający jako część kodu. Jeśli chcesz, możesz to wyodrębnić do własnego pliku,log4sh.properties
itp.
Skorzystaj z doskonałej dokumentacji Log4sh, jeśli potrzebujesz dodatkowych informacji.
set -v
wyniku chcesz, a które nie.