Ho visto metodi usati simili a quelli di @ terdon. Sono gli inizi di ciò che i linguaggi di programmazione di livello superiore chiamano logger e offrono come librerie complete, come log4J (Java), log4Perl (Perl) ecc.
Puoi ottenere qualcosa di simile usando set -x
in Bash come hai già detto, ma puoi usarlo per attivare il debug solo un sottoinsieme di comandi avvolgendo blocchi di codice con loro in questo modo.
$ set -x; cmd1; cmd2; set +x
Esempi
Ecco un modello di una fodera che puoi usare.
$ set -x; echo "hi" ;set +x
+ echo hi
hi
+ set +x
Puoi avvolgerli in questo modo per più comandi in uno script.
set -x
cmd1
cmd2
set +x
cmd3
Log4Bash
Molte persone sono ignare, ma Bash ha anche un log4 *, Log4Bash . Se hai esigenze più modeste questo potrebbe valere la pena di configurarlo.
log4bash è un tentativo di avere una migliore registrazione per gli script Bash (ovvero fare in modo che la registrazione in Bash risulti meno efficace).
Esempi
Ecco alcuni esempi di utilizzo di 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
Se volete quello che classificherei come più della piena potenza di un framework log4 *, allora proverei Log4sh .
estratto
log4sh è stato originariamente sviluppato per risolvere un problema di registrazione che avevo in alcuni degli ambienti di produzione in cui ho lavorato in cui avevo troppa registrazione o non abbastanza. I lavori di Cron in particolare mi hanno causato il maggior mal di testa con le loro e-mail costanti e fastidiose che mi dicevano che tutto funzionava o che nulla funzionava, ma non un motivo dettagliato per cui. Ora uso log4sh in ambienti in cui è fondamentale accedere dagli script della shell, ma dove ho bisogno di qualcosa di più di un semplice "Ciao, correggimi!" tipo di messaggio di registrazione. Se ti piace quello che vedi o hai suggerimenti su miglioramenti, non esitare a inviarmi un'e-mail. Se l'interesse per il progetto è sufficiente, lo svilupperò ulteriormente.
log4sh è stato sviluppato sotto la Bourne Again Shell (/ bin / bash) su Linux, ma è stata prestata molta attenzione per assicurarsi che funzioni sotto la Bourne Shell predefinita di Solaris (/ bin / sh) in quanto questa è la produzione primaria piattaforma utilizzata da me stesso.
Log4sh supporta diverse shell, non solo Bash.
- Bourne Shell (sh)
- BASH - GNU Bourne Again SHell (bash)
- DASH (trattino)
- Korn Shell (ksh)
- pdksh: la shell di dominio pubblico (pdksh)
È stato anche testato su diversi sistemi operativi, non solo Linux.
- Cygwin (sotto Windows)
- FreeBSD (supportato dall'utente)
- Linux (Gentoo, RedHat, Ubuntu)
- Mac OS X
- Solaris 8, 9, 10
L'uso di un framework log4 * richiederà un po 'di tempo per l'apprendimento, ma ne vale la pena se hai esigenze più impegnative dalla tua registrazione. Log4sh utilizza un file di configurazione in cui è possibile definire appendici e controllare la formattazione dell'output che verrà visualizzato.
Esempio
#! /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'
Ora quando lo eseguo:
$ ./log4sh.bash
INFO - Hello, world
NOTA: quanto sopra configura l'appender come parte del codice. Se ti piace questo può essere estratto nel suo file, log4sh.properties
ecc.
Consultare l' eccellente documentazione per Log4sh se sono necessari ulteriori dettagli.
set -v
dell'output vuoi e quali no.