O multilog de Dan Bernstein pode aparentemente fazer isso - ou talvez a maioria, enquanto fornece uma saída via descritores de arquivo para o processador! Para compensar a diferença que você gosta - embora as especificações de tamanho 20M / 1G possam levar algum tempo, pois parece que 16M é o seu limite externo por log. O que se segue é, na maioria das vezes, uma seleção de copiar e colar no link acima, embora o link também detalhe outras opções, como registro de data e hora por linha, mantendo [outros] outros arquivos contendo apenas o padrão de correspondência de linhas mais recente e mais .
Interface
multilog script
... script consiste em qualquer número de argumentos. Cada argumento especifica uma ação. As ações são executadas em ordem para cada linha de entrada.
Selecionando linhas
Cada linha é selecionada inicialmente. A acção...
-pattern
... desmarca a linha se o padrão corresponder à linha. A acção...
+pattern
seleciona a linha se o padrão corresponder à linha.
... padrão é uma cadeia de estrelas e não estrelas. Corresponde a qualquer concatenação de cadeias correspondidas por todas as estrelas e não estrelas na mesma ordem. Uma não estrela corresponde a si mesma. Uma estrela antes do final do padrão corresponde a qualquer sequência que não inclua o próximo caractere no padrão. Uma estrela no final do padrão corresponde a qualquer sequência.
Logs girados automaticamente
Se dir começa com um ponto ou barra, a ação ...
dir
... anexa cada linha selecionada a um log chamado dir . Se dir não existir, multilog
crie-o.
O formato do log é o seguinte:
dir é um diretório que contém alguns arquivos de log antigos, um arquivo de log chamado current e outros arquivos para multilog
acompanhar suas ações.
Cada arquivo de log antigo tem um nome começando com @ , continuando com um carimbo de data / hora preciso, mostrando quando o arquivo foi concluído e terminando com um dos seguintes códigos:
- .s : esse arquivo é completamente processado e gravado com segurança no disco.
- .u : esse arquivo estava sendo criado no momento de uma interrupção. Pode ter sido truncado. Não foi processado.
A acção...
ssize
... define o tamanho máximo do arquivo para ações dir subsequentes . multilog
decidirá que a corrente é grande o suficiente se a corrente tiver bytes de tamanho . ( multilog
também decidirá que a corrente é grande o suficiente se vir uma nova linha dentro de 2000 bytes do tamanho máximo do arquivo; tenta finalizar os arquivos de log nos limites da linha.) O tamanho deve estar entre 4096 e 16777215. O tamanho máximo padrão do arquivo é 99999.
Nas versões 0.75 e acima: Se multilog
receber um sinal ALRM , ele imediatamente decide que a corrente é grande o suficiente, se a corrente não for vazia.
(Nota: Eu suspeito que o zsh
schedule
componente interno possa ser facilmente persuadido a enviar um ALRM
em intervalos especificados, se necessário.)
A acção...
nnum
... define o número de arquivos de log para ações de diretório subseqüentes . Depois de renomear atual , se multilog
vê num ou arquivos de log mais velhos, ele remove o arquivo de log antigo com o menor timestamp. num deve ser pelo menos 2. O número padrão de arquivos de log é 10.
A acção...
!processor
... define um processador para ações dir subsequentes . multilog
alimentará a corrente através do processador e salvará a saída como um arquivo de log antigo em vez de atual . multilog
também salvará qualquer saída gravada pelo processador no descritor 5 e tornará essa saída legível no descritor 4 quando executar o processador no próximo arquivo de log. Para garantir a confiabilidade, o processador deve sair diferente de zero se houver algum problema ao criar sua saída; multilog
irá executá-lo novamente. Observe que o processador em execução pode bloquear qualquer entrada de alimentação do programa multilog
.