ฉันเห็นวิธีการใช้คล้ายกับ @ terdon's มันเป็นจุดเริ่มต้นของภาษาการเขียนโปรแกรมระดับสูงที่เรียกตัวบันทึกการโทรและเสนอเป็นไลบรารี่แบบเต็มเช่น log4J (Java), log4Perl (Perl) เป็นต้น
คุณสามารถใช้สิ่งที่คล้ายกันset -x
ใน Bash ตามที่คุณกล่าวถึง แต่คุณสามารถใช้มันเพื่อเปิดใช้งานการดีบักเพียงชุดย่อยของคำสั่งโดยการตัดบล็อคของรหัสกับพวกเขาเช่นนั้น
$ set -x; cmd1; cmd2; set +x
ตัวอย่าง
นี่คือรูปแบบซับที่คุณสามารถใช้ได้
$ set -x; echo "hi" ;set +x
+ echo hi
hi
+ set +x
คุณสามารถใส่คำสั่งนี้ในหลาย ๆ คำสั่งในสคริปต์
set -x
cmd1
cmd2
set +x
cmd3
Log4Bash
คนส่วนใหญ่จะนึกถึง แต่ทุบตียังมี log4 * เช่นกันLog4Bash หากคุณมีความต้องการที่ถ่อมตัวมากขึ้นสิ่งนี้อาจคุ้มค่ากับเวลาในการตั้งค่า
log4bash เป็นความพยายามที่จะมีการบันทึกที่ดีขึ้นสำหรับสคริปต์ Bash (เช่นทำการเข้าสู่ระบบใน Bash suck น้อยลง)
ตัวอย่าง
นี่คือตัวอย่างของการใช้ 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
หากคุณต้องการสิ่งที่ฉันจะจัดเป็นกรอบเต็มกำลังมากกว่า log4 * แล้วฉันจะลองLog4sh
สิ่งที่สกัดมา
เดิมที log4sh ได้รับการพัฒนาเพื่อแก้ไขปัญหาการบันทึกที่ฉันมีในสภาพแวดล้อมการผลิตบางอย่างที่ฉันได้ทำงานในที่ที่ฉันมีการบันทึกมากเกินไปหรือไม่เพียงพอ โดยเฉพาะอย่างยิ่งงานของ Cron ทำให้ฉันปวดหัวที่สุดกับอีเมลที่คงที่และน่ารำคาญของพวกเขาบอกฉันว่าทุกอย่างทำงานได้หรือไม่มีอะไรที่ทำงานได้ แต่ไม่ใช่เหตุผลโดยละเอียดว่าทำไม ตอนนี้ฉันใช้ log4sh ในสภาพแวดล้อมที่การบันทึกจากเชลล์สคริปต์มีความสำคัญ แต่ที่ฉันต้องการมากกว่า "Hello, fix me!" ประเภทข้อความบันทึก หากคุณชอบสิ่งที่คุณเห็นหรือมีข้อเสนอแนะในการปรับปรุงโปรดส่งอีเมลถึงฉัน หากมีความสนใจเพียงพอในโครงการฉันจะพัฒนาต่อไป
log4sh ได้รับการพัฒนาภายใต้ Bourne Again Shell (/ bin / bash) บน Linux แต่ได้รับการดูแลอย่างดีเพื่อให้แน่ใจว่าทำงานภายใต้ Bourne Shell ของ Solaris (/ bin / sh) ที่เป็นค่าเริ่มต้นเนื่องจากนี่เป็นการผลิตหลัก แพลตฟอร์มที่ใช้ด้วยตัวเอง
Log4sh รองรับเชลล์หลายตัวไม่ใช่แค่ Bash
- บอร์นเชลล์ (SH)
- BASH - GNU Bourne SHell อีกครั้ง (ทุบตี)
- DASH (เส้นประ)
- Korn Shell (ksh)
- pdksh - Public Domain Korn Shell (pdksh)
มันยังได้รับการทดสอบในหลาย ๆ ระบบปฏิบัติการไม่ใช่แค่ลินุกซ์
- Cygwin (ภายใต้ Windows)
- FreeBSD (รองรับผู้ใช้)
- Linux (Gentoo, RedHat, Ubuntu)
- Mac OS X
- โซลาริส 8, 9, 10
การใช้เฟรมเวิร์ก log4 * จะใช้เวลาในการเรียนรู้ แต่ก็คุ้มค่าถ้าคุณมีความต้องการที่มากขึ้นจากการบันทึกของคุณ Log4sh ใช้ประโยชน์จากไฟล์กำหนดค่าที่คุณสามารถกำหนด appenders และควบคุมการจัดรูปแบบสำหรับเอาต์พุตที่จะปรากฏ
ตัวอย่าง
#! /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'
ตอนนี้เมื่อฉันเรียกใช้:
$ ./log4sh.bash
INFO - Hello, world
หมายเหตุ:ข้างต้นกำหนดค่า appender เป็นส่วนหนึ่งของรหัส ถ้าคุณชอบสิ่งนี้สามารถแยกออกเป็นไฟล์ของตัวเองlog4sh.properties
ฯลฯ
ศึกษาเอกสารที่ยอดเยี่ยมสำหรับ Log4shหากคุณต้องการรายละเอียดเพิ่มเติม
set -v
คุณต้องการส่วนใดของผลลัพธ์และส่วนที่คุณไม่ต้องการ