Saya telah melihat metode yang digunakan mirip dengan @ terdon. Ini adalah awal dari apa yang disebut oleh bahasa pemrograman tingkat tinggi logger, dan menawarkan pustaka yang ditiup penuh, seperti log4J (Java), log4Perl (Perl) dll.
Anda bisa mendapatkan sesuatu yang serupa menggunakan set -x
di Bash seperti yang telah Anda sebutkan tetapi Anda dapat menggunakannya untuk mengaktifkan debugging hanya sebagian dari perintah dengan membungkus blok kode dengan mereka seperti itu.
$ set -x; cmd1; cmd2; set +x
Contohnya
Berikut adalah pola satu garis yang dapat Anda gunakan.
$ set -x; echo "hi" ;set +x
+ echo hi
hi
+ set +x
Anda dapat membungkusnya seperti ini untuk beberapa perintah dalam skrip.
set -x
cmd1
cmd2
set +x
cmd3
Log4Bash
Kebanyakan orang tidak menyadari tetapi Bash juga memiliki log4 * juga, Log4Bash . Jika Anda memiliki kebutuhan yang lebih sederhana, ini mungkin sepadan dengan waktu untuk mengaturnya.
log4bash adalah upaya untuk memiliki pendataan yang lebih baik untuk skrip Bash (yaitu membuat penebangan di Bash kurang menyedot).
Contohnya
Berikut adalah beberapa contoh penggunaan 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
Jika Anda menginginkan apa yang akan saya klasifikasikan sebagai kekuatan penuh kerangka log4 * maka saya akan mencoba Log4sh .
kutipan
log4sh pada awalnya dikembangkan untuk memecahkan masalah logging yang saya miliki di beberapa lingkungan produksi yang saya telah bekerja di mana saya memiliki terlalu banyak logging, atau tidak cukup. Pekerjaan Cron khususnya membuat saya sangat sakit kepala dengan email mereka yang konstan dan menjengkelkan memberi tahu saya bahwa semuanya bekerja, atau tidak ada yang berhasil tetapi tidak ada alasan terperinci mengapa. Saya sekarang menggunakan log4sh di lingkungan di mana penebangan dari skrip shell sangat penting, tetapi di mana saya membutuhkan lebih dari sekadar "Halo, perbaiki saya!" jenis pesan logging. Jika Anda menyukai apa yang Anda lihat, atau memiliki saran untuk perbaikan, silakan kirimkan saya email. Jika ada cukup minat dalam proyek ini, saya akan mengembangkannya lebih lanjut.
log4sh telah dikembangkan di bawah Bourne Again Shell (/ bin / bash) di Linux, tetapi sangat hati-hati telah diambil untuk memastikan itu bekerja di bawah Bourne Shell default Solaris (/ bin / sh) karena ini merupakan produksi utama platform yang digunakan oleh saya sendiri.
Log4sh mendukung beberapa shell, bukan hanya Bash.
- Bourne Shell (sh)
- BASH - GNU Bourne Again SHell (bash)
- DASH (tanda hubung)
- Korn Shell (ksh)
- pdksh - Public Domain Korn Shell (pdksh)
Ini juga telah diuji pada beberapa OS, bukan hanya Linux.
- Cygwin (di bawah Windows)
- FreeBSD (didukung pengguna)
- Linux (Gentoo, RedHat, Ubuntu)
- Mac OS X
- Solaris 8, 9, 10
Menggunakan kerangka kerja log4 * akan membutuhkan waktu untuk mempelajarinya, tetapi itu sangat berharga jika Anda memiliki lebih banyak kebutuhan dari pencatatan Anda. Log4sh menggunakan file konfigurasi tempat Anda dapat mendefinisikan appenders dan mengontrol format untuk output yang akan muncul.
Contoh
#! /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'
Sekarang ketika saya menjalankannya:
$ ./log4sh.bash
INFO - Hello, world
CATATAN: Di atas mengkonfigurasi appender sebagai bagian dari kode. Jika Anda suka ini dapat diekstraksi ke file sendiri, log4sh.properties
dll.
Konsultasikan dokumentasi yang sangat baik untuk Log4sh jika Anda memerlukan detail lebih lanjut
set -v
output yang Anda inginkan dan mana yang tidak.