Я видел методы, похожие на @ 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
Большинство людей не замечают, но у Bash также есть log4 *, Log4Bash . Если у вас более скромные потребности, возможно, стоит потратить время на его настройку.
log4bash - это попытка улучшить ведение журнала для сценариев Bash (т. е. сделать так, чтобы вход в Bash меньше занимал).
Примеры
Вот несколько примеров использования 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 в средах, где регистрация из сценариев оболочки имеет решающее значение, но где мне нужно больше, чем просто «Здравствуйте, исправьте меня!» тип сообщения журнала. Если вам нравится то, что вы видите, или у вас есть предложения по улучшению, пожалуйста, напишите мне по электронной почте. Если интерес к проекту будет достаточно, я буду его развивать.
log4sh был разработан в рамках Bourne Again Shell (/ bin / bash) в Linux, но была предпринята большая осторожность, чтобы убедиться, что он работает под стандартной оболочкой Bourne Shell из Solaris (/ bin / sh), так как это является основной продукцией Платформа используется мной.
Log4sh поддерживает несколько оболочек, а не только Bash.
- Борн Шелл (ш)
- BASH - GNU Bourne Again Sheell (Баш)
- Тире (тире)
- Корн Шелл (кш)
- pdksh - общественное достояние Korn Shell (pdksh)
Он также был протестирован на нескольких ОС, а не только на Linux.
- Cygwin (под Windows)
- FreeBSD (поддерживается пользователем)
- Linux (Gentoo, RedHat, Ubuntu)
- Mac OS X
- Солярис 8, 9, 10
Использование каркаса log4 * потребует некоторого времени для изучения, но оно того стоит, если у вас есть более требовательные потребности в вашей регистрации. Log4sh использует файл конфигурации, в котором вы можете определить приложения и управлять форматированием для вывода, который будет отображаться.
пример
#! /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
вывода вам нужны, а какие нет.