@ Terdon'unkine benzer yöntemler kullandım. Daha yüksek seviyeli programlama dillerinin logger olarak adlandırdığı ve log4J (Java), log4Perl (Perl) gibi tam kütüphaneler olarak sundukları şeylerin başlangıcıdır.
set -x
Bash'te bahsettiğiniz gibi kullanarak benzer bir şey elde edebilirsiniz, ancak kod bloklarını onlarla bu şekilde sararak hata ayıklamayı sadece bir komut alt kümesini açmak için kullanabilirsiniz.
$ set -x; cmd1; cmd2; set +x
Örnekler
İşte kullanabileceğiniz bir astar deseni.
$ set -x; echo "hi" ;set +x
+ echo hi
hi
+ set +x
Bir komut dosyasında birden çok komut için bunları bu şekilde sarabilirsiniz.
set -x
cmd1
cmd2
set +x
cmd3
Log4Bash
Çoğu insan bilmez ama Bash'in log4 * özelliği de vardır, Log4Bash . Daha mütevazı ihtiyaçlarınız varsa, bunu ayarlamak için zaman ayırmaya değer olabilir.
log4bash, Bash betikleri için daha iyi günlüğe kaydetme girişimidir (yani Bash'te günlüğe kaydetmeyi daha az emer).
Örnekler
Log4bash kullanımına bazı örnekler.
#!/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
Eğer bir log4 * çerçevesinin tüm gücü olarak sınıflandırmak istiyorum ne istiyorsanız o zaman Log4sh denemek istiyorum .
alıntı
log4sh başlangıçta çok fazla günlük kaydına sahip olduğum veya yeterli olmadığım yerlerde çalıştığım bazı üretim ortamlarında yaşadığım bir günlük kaydı sorununu çözmek için geliştirildi. Özellikle Cron işleri bana her şeyin işe yaradığını ya da hiçbir şeyin işe yaramadığını, ancak ayrıntılı bir neden olmadığını söyleyen sürekli ve sinir bozucu e-postalarıyla en çok baş ağrısına neden oldu. Artık kabuk komut dosyalarından günlüğün kritik olduğu ortamlarda log4sh kullanıyorum, ancak basit bir "Merhaba, beni düzelt!" günlük iletisinin türü. Gördüklerinizi beğendiyseniz veya iyileştirmeler hakkında herhangi bir öneriniz varsa, lütfen bana bir e-posta bırakmaktan çekinmeyin. Projeye yeterince ilgi varsa, onu daha da geliştireceğim.
log4sh Linux'ta Bourne Again Shell (/ bin / bash) altında geliştirilmiştir, ancak birincil üretim olması nedeniyle varsayılan Bourne Solaris Kabuğu (/ bin / sh) altında çalıştığından emin olmak için büyük özen gösterilmiştir. kendim kullandım.
Log4sh, sadece Bash'ı değil, birkaç mermiyi destekler.
- Bourne Kabuğu (sh)
- BASH - GNU Bourne Yine Kabuğu (bash)
- DASH (tire)
- Korn Kabuğu (ksh)
- pdksh - Kamusal Alan Korn Kabuğu (pdksh)
Ayrıca sadece Linux üzerinde değil, birçok işletim sisteminde test edilmiştir.
- Cygwin (Windows altında)
- FreeBSD (kullanıcı destekli)
- Linux (Gentoo, RedHat, Ubuntu)
- Mac OS X
- Solaris 8, 9, 10
Bir log4 * çerçevesi kullanmanın öğrenilmesi biraz zaman alacaktır, ancak günlüğünüzden daha zorlu ihtiyaçlarınız varsa buna değer. Log4sh, ekleri tanımlayabileceğiniz ve çıkacak çıktı için biçimlendirmeyi kontrol edebileceğiniz bir yapılandırma dosyası kullanır.
Misal
#! /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'
Şimdi çalıştırdığımda:
$ ./log4sh.bash
INFO - Hello, world
Not: Yukarıdaki ek kodun bir parçası olarak yapılandırır. İsterseniz kendi dosyasına log4sh.properties
vb. Çıkarılabilir .
Daha fazla ayrıntıya ihtiyacınız varsa Log4sh için mükemmel belgelere bakın.
set -v
çıktının hangi kısımlarını istediğinizi ve hangilerini yapmadığınızı açıklamazsanız yardımcı olamayız .