2015-07-28 1 views
1

enter image description hereLogstash - événement délimiter dans log4net.log qui peut contenir plusieurs lignes

Voici un fichier journal typique généré par log4net

Ainsi, ce fichier journal est lu par le logstash file input plugin.

Par défaut, la configuration delimiter est \n, ce qui signifie que chaque ligne est un événement. Mais dans le fichier journal ci-dessus, vous pouvez voir qu'il peut y avoir plusieurs lignes pour un événement. (comme ERROR ou FAULT ou autres)

Comment configurer Logstash pour délimiter l'événement correctement?

Je suppose que je pourrais configurer plusieurs délimiteurs comme \nINFO\nDEBUG\nERROR\nFAULT. Mais le document dit qu'il ne peut y avoir qu'un seul délimiteur.

Répondre

4

La configuration suivante devrait délimiter vos événements correctement.

config d'entrée:

input { 
    file { 
     path => "/absolute/path/here.log" 
     type => "log4net" 
     codec => multiline { 
        pattern => "^(DEBUG|WARN|ERROR|INFO|FATAL)" 
        negate => true 
        what => previous 
       } 
     } 
} 
3

Ce que vous avez là est un événement multiligne. Il y a un codec qui vous aidera à traiter cela.

L'idée de base est de définir un modèle qui identifie le début d'une entrée de journal (dans notre cas, le niveau de consignation), puis de passer toutes les autres lignes dans la précédente.

+0

Réponse correcte. Je viens d'ajouter un exemple de configuration. – hurb

+2

J'aime enseigner aux gens à pêcher :) –

+0

Quelqu'un a édité cette réponse car il semble que le filtre multiligne a été retiré dans LS5. Comme je sais que beaucoup de gens utilisent des versions plus anciennes, je vais simplement ajouter cette option en commentaire. –