Registrando com timestamp

1

Estou tentando prefixar as entradas de log com um registro de data e hora, mas os timestamps gerados não parecem mudar com o tempo:

#!/bin/sh

NOW=$(date +"%Y-%m-%d %H:%M:%S")

echo "$NOW Logging something"
sleep 2
echo "$NOW Logging something else"

A saída para é:

2012-03-02 12:32:49 Logging something
2012-03-02 12:32:49 Logging something else

Alguém sabe o que estou fazendo errado?

    
por Bertolt 02.03.2012 / 12:44

3 respostas

3

Compare e contraste com:

echo "'date +"%Y-%m-%d %H:%M:%S"' Logging something"
sleep 2
echo "'date +"%Y-%m-%d %H:%M:%S"' Logging something else"

Na sua versão, NOW é definido uma vez nessa hora e permanece como o restante da execução do script. Acima, a data é gerada no momento do "eco".

Se você não quiser adicionar data toda vez que puder usar uma função:

#!/bin/sh

logtest() {
    echo "'date +"%Y-%m-%d %H:%M:%S"' $1"
}

logtest "Logging something"
sleep 2
logtest "Logging something else"
    
por 02.03.2012 / 12:58
3

O que há de errado com o bom e antigo comando logger ? :)

#!/bin/sh

logger -t yourprogram Hello, this is a message
sleep 2
logger -t yourprogram Hello, this is another message

O registrador também permite que você use as prioridades do syslog.

    
por 02.03.2012 / 13:08
0

Você cria o registro de data e hora apenas uma vez, quando declara a variável. Não será atualizado automaticamente.

Tente isto:

echo 'date +"%Y-%m-%d %H:%M:%S"' "Logging something"
    
por 02.03.2012 / 12:53