Como outros explicaram, é da natureza dos arquivos de log que não se obtêm entradas fora de ordem , não importa o que aconteça com os timestamps. O problema que você está visualizando é ambigüidade , onde um mecanismo timestamp mal escolhido não denota exclusivamente um único ponto no tempo.
Isso dificulta que os logs de leitura do administrador do sistema consigam determinar quando as coisas aconteceram. Após o fato, uma entrada de log que (digamos) tenha apenas um timestamp de Apr 3 02:14:57
não indica se é a hora local ou UTC, nem (presumindo por exemplo que é a hora local e, especificamente, a Hora do Leste da Austrália) é 02:14:57 AEST ou 02:14:57 AEDT.
Mas isso é injustamente presumir que existe uma coisa tão simples como "arquivos de log do Linux". Nem todos os arquivos de log funcionam da mesma maneira, e as pessoas estão se afastando desse tipo de registro de data e hora desde os anos 80.
Por exemplo: Aqueles de nós que têm usado daemontools e sua história há muitos anos têm arquivos de log do Linux que usam timestamps TAI64N. Uma entrada de log se parece com isso:
@40000000577d024d2d10bb6d Hello there!
A longa cadeia de dígitos hexadecimais é um timestamp TAI64N. Não é nada mais do que uma contagem de 64 bits de segundos desde um ponto no passado muito remoto (2 62 segundos antes 1970-01-01 00:00:00 Tempo Atômico Internacional) seguido por um 32- contagem de bits de nanossegundos.
O TAI não tem variantes diferentes de fuso horário. Nem sequer repetiu os segundos "saltos". Cada segundo tem um número fixo único.
E, de fato, processar esses timestamps em uma hora local legível para humanos é exatamente o trabalho do programa tai64nlocal
:
jdebp % echo @40000000577d024d2d10bb6d Hello there\! | TZ=UTC0 tai64nlocal
2016-07-06 13:05:45.756071277 Hello there!
jdebp % echo @40000000577d024d2d10bb6d Hello there\! | TZ=PST8PDT tai64nlocal
2016-07-06 06:05:45.756071277 Hello there!
jdebp %
Fusos horários e mudanças de DST têm efeito nulo em meus "arquivos de log do Linux", e eu posso ler os arquivos de log em qualquer fuso horário que eu queira. (Também posso fazer coisas como mesclar classificar vários arquivos de log em um com a opção sort
-m
.)