He visto métodos similares a los de @ terdon. Es el comienzo de lo que los lenguajes de programación de nivel superior llaman registradores y ofrecen como bibliotecas completas, como log4J (Java), log4Perl (Perl), etc.
Puede obtener algo similar usando set -x
en Bash como ha mencionado, pero puede usarlo para activar la depuración solo un subconjunto de comandos envolviendo bloques de código con ellos de esta manera.
$ set -x; cmd1; cmd2; set +x
Ejemplos
Aquí hay un patrón de una línea que puede usar.
$ set -x; echo "hi" ;set +x
+ echo hi
hi
+ set +x
Puede envolverlos así para múltiples comandos en un script.
set -x
cmd1
cmd2
set +x
cmd3
Log4Bash
La mayoría de las personas son ajenas pero Bash también tiene un log4 * también, Log4Bash . Si tiene necesidades más modestas, podría valer la pena configurarlo.
log4bash es un intento de tener un mejor registro para los scripts de Bash (es decir, hacer que el inicio de sesión en Bash succione menos).
Ejemplos
Aquí hay algunos ejemplos del uso de 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
Si quieres lo que clasificaría como más de la potencia total de un marco log4 *, entonces probaría Log4sh .
extracto
Log4sh se desarrolló originalmente para resolver un problema de registro que tuve en algunos de los entornos de producción en los que he trabajado, donde tuve demasiado registro o no lo suficiente. Los trabajos de Cron en particular me causaron la mayor cantidad de dolores de cabeza con sus correos electrónicos constantes y molestos que me decían que todo funcionaba o que nada funcionaba, pero no una razón detallada del por qué. Ahora uso log4sh en entornos en los que el registro desde scripts de shell es crítico, pero donde necesito algo más que un simple "¡Hola, corrígeme!" tipo de mensaje de registro. Si le gusta lo que ve o tiene alguna sugerencia sobre mejoras, no dude en enviarme un correo electrónico. Si hay suficiente interés en el proyecto, lo desarrollaré más.
log4sh se ha desarrollado bajo Bourne Again Shell (/ bin / bash) en Linux, pero se ha tenido mucho cuidado para asegurarse de que funciona bajo el Bourne Shell predeterminado de Solaris (/ bin / sh) ya que esta es la producción principal plataforma utilizada por mí mismo.
Log4sh admite varios shells, no solo Bash.
- Bourne Shell (sh)
- BASH - GNU Bourne Again SHell (bash)
- DASH (guión)
- Korn Shell (ksh)
- pdksh: el Korn Shell de dominio público (pdksh)
También se ha probado en varios sistemas operativos, no solo en Linux.
- Cygwin (bajo Windows)
- FreeBSD (compatible con el usuario)
- Linux (Gentoo, RedHat, Ubuntu)
- Mac OS X
- Solaris 8, 9, 10
El uso de un marco log4 * llevará algún tiempo para aprender, pero vale la pena si tiene necesidades más exigentes de su registro. Log4sh utiliza un archivo de configuración donde puede definir los apéndices y controlar el formato de la salida que aparecerá.
Ejemplo
#! /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'
Ahora cuando lo ejecuto:
$ ./log4sh.bash
INFO - Hello, world
NOTA: Lo anterior configura el apéndice como parte del código. Si lo desea, puede extraerlo en su propio archivo, log4sh.properties
etc.
Consulte la excelente documentación de Log4sh si necesita más detalles.
set -v
salida desea y cuáles no.