Question catch Error[0] et EZLog module
- Gabriel
- Auteur du sujet
- Hors Ligne
- Membre elite
Réduire
Plus d'informations
- Messages : 248
- Remerciements reçus 1
il y a 6 mois 4 jours - il y a 5 mois 3 semaines #34163
par Gabriel
[réouvert] catch Error[0] et EZLog module a été créé par Gabriel
Hello
dans un de mes scripts je fait un try/catch sur le chargmeent de fonction (stocké dans des fichiers séparés)
ca renvoit une erreur sur un fichier (le pb n'est pas la fonction dans le fichier je sais comment corriger, mais je veux capturer l'erreur dans les log)
si je fais
le texte est ajouté dans le fichier error.log, c'est une string multiligne
j'ai essayé
l'erreur EZLog:
techniquement je ne pense pas que c'est un bug dans EZLog, il attend une string simple ligne
une idée?
p.s.: je sais qu'EZLog est un projet connu de certains
dans un de mes scripts je fait un try/catch sur le chargmeent de fonction (stocké dans des fichiers séparés)
dir c:\script\fonction\*.ps1 | foreach {
try { . $_.fullname}
catch{
write-ezlog -Category ERR -Message ($Error[0])
}
ca renvoit une erreur sur un fichier (le pb n'est pas la fonction dans le fichier je sais comment corriger, mais je veux capturer l'erreur dans les log)
At c:\script\function_test.ps1:70 char:2
+ }
+ ~
Unexpected token '}'} in expression or statement.
si je fais
$Error[0].toString() | out-file .\error.log -Append
le texte est ajouté dans le fichier error.log, c'est une string multiligne
j'ai essayé
$Error[0].toString() | foreach { write-ezlog -Category ERR -Message ($_)
ou
$Error[0].toString() -split "\r\n" | foreach { write-ezlog -Category ERR -Message ($_)
l'erreur EZLog:
write-ezlog : Error formatting a string: Input string was not in a correct format...
techniquement je ne pense pas que c'est un bug dans EZLog, il attend une string simple ligne
une idée?
p.s.: je sais qu'EZLog est un projet connu de certains
Dernière édition: il y a 5 mois 3 semaines par Gabriel.
Connexion ou Créer un compte pour participer à la conversation.
- Alastor
- Hors Ligne
- Membre junior
Réduire
Plus d'informations
- Messages : 35
- Remerciements reçus 1
il y a 6 mois 3 jours - il y a 6 mois 3 jours #34164
par Alastor
Réponse de Alastor sur le sujet catch Error[0] et EZLog module
Comme un string n'est pas un iterable, la commande suivante :
te retourne un seul objet, la string dans sans totalité, non ?
Et comme, il me semble qu'en powershell le retour à la ligne dans un string est `n, la commande suivante :
ne trouve rien sur quoi faire le split, et retourne donc toute la chaine, non ?
Personnellement, je tenterais un
Mais je ne suis sur de rien.
$Error[0].toString() | foreach { write-ezlog -Category ERR -Message ($_)
te retourne un seul objet, la string dans sans totalité, non ?
Et comme, il me semble qu'en powershell le retour à la ligne dans un string est `n, la commande suivante :
$Error[0].toString() -split "\r\n" | foreach { write-ezlog -Category ERR -Message ($_)
ne trouve rien sur quoi faire le split, et retourne donc toute la chaine, non ?
Personnellement, je tenterais un
write-ezlog -Category ERR -Message (Error[0].toString() -replace "`n"," ")
Mais je ne suis sur de rien.
Dernière édition: il y a 6 mois 3 jours par Alastor.
Connexion ou Créer un compte pour participer à la conversation.
- Gabriel
- Auteur du sujet
- Hors Ligne
- Membre elite
Réduire
Plus d'informations
- Messages : 248
- Remerciements reçus 1
il y a 6 mois 3 jours #34165
par Gabriel
Réponse de Gabriel sur le sujet catch Error[0] et EZLog module
bonjour Alastor
je viens d'essayer et meme erreur
merci pour la propisition.
je viens d'essayer et meme erreur
write-ezlog -Category ERR -Message ($Error[0].toString() -replace "`n"," ")
write-ezlog -Category ERR -Message ($Error[0].toString() -replace "`r`n"," ")
merci pour la propisition.
Connexion ou Créer un compte pour participer à la conversation.
- Arnaud Petitjean
- Hors Ligne
- Modérateur
il y a 6 mois 11 heures #34168
par Arnaud Petitjean
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Réponse de Arnaud Petitjean sur le sujet catch Error[0] et EZLog module
Bonjour Messieurs,
Tout d'abord je tenais à vous remercier de la remontée de ce bug.
N'hésitez pas à le faire sur GitHub en ouvrant une issue.
Cela étant dit, je viens d'essayer de reproduire le problème et je n'y parviens pas... Quelle version utilisez-vous ?
Une solution de contournement, pourrait être je pense, de convertir la donnée en JSON avant de l'envoyer dans le log.
Arnaud
Tout d'abord je tenais à vous remercier de la remontée de ce bug.
N'hésitez pas à le faire sur GitHub en ouvrant une issue.
Cela étant dit, je viens d'essayer de reproduire le problème et je n'y parviens pas... Quelle version utilisez-vous ?
Une solution de contournement, pourrait être je pense, de convertir la donnée en JSON avant de l'envoyer dans le log.
Arnaud
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Connexion ou Créer un compte pour participer à la conversation.
- Gabriel
- Auteur du sujet
- Hors Ligne
- Membre elite
Réduire
Plus d'informations
- Messages : 248
- Remerciements reçus 1
il y a 5 mois 4 semaines - il y a 5 mois 3 semaines #34175
par Gabriel
Réponse de Gabriel sur le sujet catch Error[0] et EZLog module
bonsoir Arnaud
je n'ai pas créer de bug sur github, car je n'en étais pas sur.
j'utilise EZLog 2.2.7
le script démarre par charger des fonctions stocker dans des fichiers ps1 et l'une des fonctions contient des erreurs (genre parenthèse manquante)
l'erreur qui est alors renvoyer contient tout ça
en convertissant en json on aune autre erreur
ce qui génère un autre message d'erreur
j'ai 2 machines la perso est en powershell 7.4. et je n'ai pas d'erreur, la pro je suis en 5.1 et j'ai l'erreur
par contre il y a une diff dans les codes de tests. je vais essayer de créer un script commun et retester
je n'ai pas créer de bug sur github, car je n'en étais pas sur.
j'utilise EZLog 2.2.7
le script démarre par charger des fonctions stocker dans des fichiers ps1 et l'une des fonctions contient des erreurs (genre parenthèse manquante)
l'erreur qui est alors renvoyer contient tout ça
C:\temp> .\test2.ps1
2024-04-04 22:34:21| INF | [^o^] > Greetings programs!
2024-04-04 22:34:21| INF | EZLog version : 2.2.7
C:\temp\_modules\function_get-Test.ps1:56 char:20
+ "NotReferenced"
+ ~
Missing statement block in switch statement clause.
At C:\temp\_modules\function_get-Test.ps1:61 char:1
+ } ## end function_get-Test
+ ~
Unexpected token '}' in expression or statement.
+ CategoryInfo : ParserError: (:) , parseException
+ FullyQua1ifiedErrorId : MissingSwitchStatementClause
Write-EZLog : Error formatting a string : Input string was not in a correct format..
At C:\temp\test2.ps1:29 char:4
Write-EZLog -Category ERR -Message ($mess)
+ CategoryInfo : InvalidOperation: (2024-04-04 22:3...r statement.{1}:string) [Write-EZLog], RuntimeException
+ FullyQualifiedErrorId : FormatError,Write-EZLog
en convertissant en json on aune autre erreur
$mess = $Errror[0] | convertto-json
write-ezlog -category INF -Message $mess
ce qui génère un autre message d'erreur
ConvertTo-Json : The type 'System.Collections.ListDictionaryInternal' is not supported for serialization or deserialization of a dictionary. Keys must be strings. + CategoryInfo : InvalidOperation: (System.Collecti...tionaryInternal:ListDictionaryInternal) [ConvertTo-Json], InvalidOperationException + FullyQualifiedErrorId : NonStringKeyInDictionary,Microsoft.PowerShell.Commands.ConvertToJsonCommand
j'ai 2 machines la perso est en powershell 7.4. et je n'ai pas d'erreur, la pro je suis en 5.1 et j'ai l'erreur
par contre il y a une diff dans les codes de tests. je vais essayer de créer un script commun et retester
Dernière édition: il y a 5 mois 3 semaines par Gabriel.
Connexion ou Créer un compte pour participer à la conversation.
- Gabriel
- Auteur du sujet
- Hors Ligne
- Membre elite
Réduire
Plus d'informations
- Messages : 248
- Remerciements reçus 1
il y a 5 mois 3 semaines #34176
par Gabriel
Réponse de Gabriel sur le sujet catch Error[0] et EZLog module
bon avec le meme code (pure code de test), je n'arive pas a reproduire mon pb.
je dois etudier mon script ou l'erreur apparait voir la difference.
comme je pourrais pas le faire avant plusieurs joursn on va mettre le topic en pause.
je dois etudier mon script ou l'erreur apparait voir la difference.
comme je pourrais pas le faire avant plusieurs joursn on va mettre le topic en pause.
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.125 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les initiés
- catch Error[0] et EZLog module