Question Recherche d'erreurs fichier log,fichier résultat

Plus d'informations
il y a 11 ans 3 mois #18623 par HELLE
Bonsoir/bonjour,

Je me présente, Tristan, je travaille en tant que CPI dans une entreprise qui développe des logiciels RH et GF pour le monde publique, étant débutant dans le développement et dans le powershell particulièrement, je souhaiterais avoir votre aide :)

J'explique un peu ma problématique, en effet dans le cadre d'une recette technique de validation des setups que mes amis développeurs génèrent, je souhaite optimiser la procédure et pouvoir l'automatiser le plus possible.

Je souhaite faire une recherche de chaîne de caractère comme: \" erreur \" \"ORA-\" \" ERROR\" dans des fichiers de log se créant toujours dans le même répertoire de type:

c:\nomdulogiciel\log\serveursetupgf2014.1.02.log
c:\nomdulogiciel\log\clientsetupgf2014.1.02.log
c:\nomdulogiciel\log\serveursetupgf2014.1.03.log
c:\nomdulogiciel\log\clientsetupgf2014.1.03.log

(Les noms des logs sont jamais identiques)

Et transposer cette recherche dans un fichier résultat de type:

C:\Nomdulogiciel\log\résultat_recherche_erreurs.log

Qui contiendrait: L'erreur mais également dans quel log est présente l'erreur:

Par exemple qu'il me dise:

ORA- dans c:\nomdulogiciel\log\serveursetupgf2014.1.03.log

Pensez-vous que ce soit réalisable, avez vous déjà mis en place ce genre de script ?

En vous remerciant pour vos aides précieuses .

Cordialement Tristan

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 11 ans 3 mois #18624 par Laurent Dardenne
Salut,
tristan.helle écrit:

Pensez-vous que ce soit réalisable

Oui.
Une piste rapido :
[code:1]
#Fonction dispo sur ce site
#New-PSCustomObjectFunction -Noun LogError -Parameters FileName,Pattern,Line -File

#Requires -version 3
Function New-LogError{
param(
[Parameter(Mandatory=$True,position=0)]
$FileName,
[Parameter(Mandatory=$True,position=1)]
$Pattern,
[Parameter(Mandatory=$True,position=2)]
$Line
)

[pscustomobject]@{
PSTypeName='LogError';
FileName=$FileName;
Pattern=$Pattern;
Line=$Line;
}
}# New-LogError

$pattern=\" erreur |ORA-| ERROR\"

$resultFileLog='C:\Nomdulogiciel\log\résultat_recherche_erreurs.log'
$PathLog='c:\nomdulogiciel\log'
dir \"$PathLog\*.log\"|
Select-string -Pattern $Pattern |
Foreach {
#todo New-LogErro x y z
}|
Export-csv $resultFile
[/code:1]
Premier point à résoudre : connaitre les répertoires des logs
Le second : construire l'objet à partir du résultat de Select-String.
le dernier : construire le fichier résultat dans un fichier .CSV.

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 11 ans 3 mois #18625 par HELLE
Bonsoir Laurent,

Merci beaucoup pour cette réponse , je transmettrais demain mon code pour que vous puissiez mieux comprendre ma demande , mais déjà je pense que ça va pouvoir m'aider , merci encore !

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 11 ans 3 mois #18626 par Laurent Dardenne
tristan.helle écrit:

je transmettrais demain mon code pour que vous puissiez mieux comprendre ma demande

Tu peux, mais des lignes d'exemple et le résultat attendu seront plus utiles.

Les questions pour ce type de pb sont relative aux spécifications, pas à l'implémentation (le code).

Le code précédent augmenté :
[code:1]
\"Tuple en erreur \" > c:\temp\x1.log
\"testerreur\"> c:\temp\x11.log
\"Transaction ORA-\" > c:\temp\x2.log
\"Tora TORA-\" > c:\temp\x22.log
\"PLSQL truc ERROR\">c:\temp\x3.log
\" ERRORRecording\">c:\temp\x31.log

$pattern=\" erreur |ORA-| ERROR\"
$resultFile='C:\temp\résultat_recherche_erreurs.csv'
$PathLog='c:\temp'

dir \"$PathLog\x*.log\"|
Select-string -Pattern $Pattern |
Foreach {
New-LogError -FileName $_.Path -Pattern $_.Matches[0].Value -Line $_.Line
}|
Export-csv $resultFile

Import-csv $resultFile
[/code:1]
Puisque ce code est lié à des regex, il te faut un jeux de test, voir demander aux dev le pattern de construction des lignes d'erreur, ou consulter la doc d'Oracle. Vérifie si tes logs sont tous dans la même culture (Fr, etc).
Je te laisse coder la v2 qui supprimerait l'usage du cmdlet Foreach :P

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.045 secondes
Propulsé par Kunena