Ich habe Methoden gesehen, die denen von @ terdon ähneln. Es ist der Anfang dessen, was höhere Programmiersprachen als Logger bezeichnen und als vollwertige Bibliotheken anbieten, wie beispielsweise log4J (Java), log4Perl (Perl) usw.
Sie können mit set -x
Bash etwas Ähnliches erreichen, wie Sie es bereits erwähnt haben, aber Sie können damit das Debuggen nur einer Teilmenge von Befehlen beschleunigen, indem Sie Codeblöcke wie folgt damit verbinden.
$ set -x; cmd1; cmd2; set +x
Beispiele
Hier ist ein einzeiliges Muster, das Sie verwenden können.
$ set -x; echo "hi" ;set +x
+ echo hi
hi
+ set +x
Sie können sie für mehrere Befehle in einem Skript so umbrechen.
set -x
cmd1
cmd2
set +x
cmd3
Log4Bash
Die meisten Leute sind sich dessen nicht bewusst, aber Bash hat auch ein log4 *, Log4Bash . Wenn Sie bescheidenere Bedürfnisse haben, ist dies möglicherweise die Zeit wert, um es einzurichten.
log4bash ist ein Versuch, Bash-Skripte besser zu protokollieren (dh, die Protokollierung in Bash ist nicht so einfach).
Beispiele
Hier sind einige Beispiele für die Verwendung von 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
Wenn Sie möchten, was ich als die volle Leistung eines log4 * -Frameworks einstufen würde, würde ich es mit Log4sh versuchen.
Auszug
log4sh wurde ursprünglich entwickelt, um ein Protokollierungsproblem zu lösen, das ich in einigen der Produktionsumgebungen hatte, in denen ich entweder zu viel oder zu wenig protokolliert habe. Insbesondere Cron-Jobs bereiteten mir mit ihren ständigen und nervigen E-Mails die größten Kopfschmerzen. Sie sagten mir, dass alles funktioniert hat oder dass nichts funktioniert hat, aber kein detaillierter Grund warum. Ich verwende jetzt log4sh in Umgebungen, in denen das Protokollieren von Shell-Skripten wichtig ist, ich aber mehr als nur ein einfaches "Hallo, behebe mich!" Art der Protokollmeldung. Wenn Ihnen das, was Sie sehen, gefällt oder Sie Verbesserungsvorschläge haben, schreiben Sie mir bitte eine E-Mail. Wenn genügend Interesse an dem Projekt besteht, werde ich es weiterentwickeln.
log4sh wurde unter der Bourne Again-Shell (/ bin / bash) unter Linux entwickelt, es wurde jedoch große Sorgfalt darauf verwendet, dass es unter der Standard-Bourne Shell von Solaris (/ bin / sh) funktioniert, da dies die primäre Produktion ist Plattform von mir selbst genutzt.
Log4sh unterstützt mehrere Shells, nicht nur Bash.
- Borowski-Shell (sh)
- BASH - GNU Bourne Again SHell (Bash)
- DASH (Bindestrich)
- Korn Shell (ksh)
- pdksh - die Public Domain Korn Shell (pdksh)
Es wurde auch auf mehreren Betriebssystemen getestet, nicht nur auf Linux.
- Cygwin (unter Windows)
- FreeBSD (benutzerunterstützt)
- Linux (Gentoo, RedHat, Ubuntu)
- Mac OS X
- Solaris 8, 9, 10
Die Verwendung eines log4 * -Frameworks benötigt einige Zeit zum Erlernen, es lohnt sich jedoch, wenn Sie höhere Anforderungen an die Protokollierung haben. Log4sh verwendet eine Konfigurationsdatei, in der Sie Appender definieren und die Formatierung für die Ausgabe steuern können.
Beispiel
#! /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'
Wenn ich es jetzt starte:
$ ./log4sh.bash
INFO - Hello, world
HINWEIS: Mit dem obigen Befehl wird der Appender als Teil des Codes konfiguriert. Wenn Sie dies möchten, können Sie es in eine eigene Datei log4sh.properties
usw. extrahieren .
Weitere Informationen finden Sie in der Dokumentation zu Log4sh .
set -v
Ausgabe Sie möchten und welche nicht.