IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Exécution et industrialisation Discussion :

Redirection des logs


Sujet :

Exécution et industrialisation

  1. #1
    Membre régulier Avatar de SebastienM
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    310
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 310
    Points : 86
    Points
    86
    Par défaut Redirection des logs
    Bonjour,

    j'aimerai rediriger les logs (warn et error) dans un fichier externe (format texte) dans le but d'empêcher l'enchainement des jobs si une erreur se produit et de garder une trace écrite.
    Je n'ai pas réussi avec le logcatcher (en m'aidant de la documentation).
    Savez-vous comment faire cette manipulation ?

    Merci.

  2. #2
    Membre averti Avatar de bouvda
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    252
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 252
    Points : 318
    Points
    318
    Par défaut
    Bonjour,

    pour rediriger les logs dans un fichier j'utilise un tLogCatcher que je relie à un tFileOutputDelimited pour lequel je coche l'option "Append" afin qu'il n'écrase pas les messages précédents.

  3. #3
    Membre régulier Avatar de SebastienM
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    310
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 310
    Points : 86
    Points
    86
    Par défaut
    Merci ^^

  4. #4
    Membre régulier Avatar de SebastienM
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    310
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 310
    Points : 86
    Points
    86
    Par défaut
    Bonjour,

    Comment insérer une ligne dans une table (avec un tMysqlRow) en cas d'erreur ?
    j'ai essayé de relier ça au tDie mais sans succès...

    Merci.

  5. #5
    Membre expérimenté Avatar de Benoit_Durand
    Profil pro
    Consultant en Business Intelligence Freelance
    Inscrit en
    Mars 2005
    Messages
    861
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence Freelance

    Informations forums :
    Inscription : Mars 2005
    Messages : 861
    Points : 1 308
    Points
    1 308
    Par défaut
    Et à partir du tLogCatcher ça ne marche pas ?

  6. #6
    Membre régulier Avatar de SebastienM
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    310
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 310
    Points : 86
    Points
    86
    Par défaut
    ça ne fonctionne pas top ; si il plante il m'ensère 5 ou 6 lignes comme quoi c'est OK

    j'ai réalisé la structure suivante :
    ___________ifok
    tLogCatcher ---> tMysqlRow1
    __________|iferror
    __________|---> tMysqlRow2

  7. #7
    Membre averti Avatar de bouvda
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    252
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 252
    Points : 318
    Points
    318
    Par défaut
    Citation Envoyé par SebastienM
    ça ne fonctionne pas top ; si il plante il m'ensère 5 ou 6 lignes comme quoi c'est OK

    j'ai réalisé la structure suivante :
    ___________ifok
    tLogCatcher ---> tMysqlRow1
    __________|iferror
    __________|---> tMysqlRow2
    Bonjour,

    je ne pense pas qu'il faut utiliser une telle structure car le lien ifError ne sera jamais utilisé. Il faut plutôt utiliser un lien Main puis filtrer les lignes en passant par un tMap (par contre je ne connais pas par coeur les codes d'erreurs donc je ne sais pas quel filtre employer mais ça serait surement sur le champ code ou priority).
    Aussi s'il y a juste une insertion à faire pourquoi ne pas utiliser un tMysqlOutput plutôt qu'un tMysqlRow ?

  8. #8
    Membre régulier Avatar de SebastienM
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    310
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 310
    Points : 86
    Points
    86
    Par défaut
    merci de ta réponse. J'ai tout essayé... seulement voilà, si il n'y a pas d'erreur le tLogcatcher ne renvoie aucun code ; dans le second cas, je dois lancer un tMysqlRow qui contient une requête de la sorte :
    "INSERT INTO STAT_JOURNAL(ID_JOURNAL,NUM_ALIM,COD_WF,DATE_EVT,TYP_EVT,LB_MESSAGE,COD_INFO,VAL_INFO)
    VALUES(NULL,"+context.getProperty("num_alim")+",'WF_CHRGT_DEBUT',NOW(),'ERREUR','Fin WF_CHRGT_DEBUT',NULL,NULL)"

    Mais il ne passe même pas dans le tMap

  9. #9
    Membre averti Avatar de bouvda
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    252
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 252
    Points : 318
    Points
    318
    Par défaut
    Si tu veux faire des logs du début et de la fin d'un job alors il faut utiliser un tStatCatcher. Si tu veux également avoir le début et la fin de l'éxecution d'un composant spécifique dans le job, alors il suffit de cocher tStatCatcher Statistics dans l'onglet Main de l'onglet Propriétés pour ce composant. Ainsi le tStatCatcher capturera le début et la fin de l'exécution du composant.

  10. #10
    Membre régulier Avatar de SebastienM
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    310
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 310
    Points : 86
    Points
    86
    Par défaut
    Merci de ta réponse.
    j'ai trouvé une autre solution, il ne me manque plus que de trouver un moyen de limiter le nombre de rows en sortie : sur mon lien main, j'ai 6 rows et je voudrais qu'il ne passe qu'une fois au maximum dedans.

    Est-ce possible ?

  11. #11
    Membre averti Avatar de bouvda
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    252
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 252
    Points : 318
    Points
    318
    Par défaut
    Tu ne veux que la première ligne ?
    Si c'est cela je connais une manière de faire, pas très propre mais qui fonctionne : il faut passer par un tUniqRow pour lequel aucun champ n'est déclaré comme Key Attribute dans la propriété Unique Key.
    Sinon je ne connais pas de méthode simple de le faire avec un composant proposé dans Open Studio.

  12. #12
    Membre expérimenté Avatar de Benoit_Durand
    Profil pro
    Consultant en Business Intelligence Freelance
    Inscrit en
    Mars 2005
    Messages
    861
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence Freelance

    Informations forums :
    Inscription : Mars 2005
    Messages : 861
    Points : 1 308
    Points
    1 308
    Par défaut
    haha, c'est moi qui t'ai répondu sur le forum officiel (bedurand).
    En fait ce doit être les mêmes personnes sur ce forum et le officiel mais sous des pseudos différents

    Pour limiter le nombre de lignes je n'ai pas de solution à te proposer immédiatement. Etant donné que j'ai le même problème si je trouve quelque chose je te répondrai sur http://www.talendforge.org/forum/viewtopic.php?id=1184

    Mais en fait mon job d'insertion en cas d'erreur m'insère le bon nombre de lignes mais je reçois les mails en double

  13. #13
    Membre régulier Avatar de SebastienM
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    310
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 310
    Points : 86
    Points
    86
    Par défaut
    ça ne fonctionne pas avec le tUniqRow, j'ai bien laissé décoché toutes les key attributes et j'ai quand même 6 lignes en sortie

    >Hebus_Beer
    le monde est petit ^^

  14. #14
    Membre averti Avatar de bouvda
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    252
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 252
    Points : 318
    Points
    318
    Par défaut
    Il faut compter le nombre de lignes "manuellement".
    Pour cela, il faut déclarer une variable de contexte compteur de type int avec comme valeur par défaut 0.
    Ensuite il faut incrémenter cette variable à chaque message à l'aide d'un tJavaRow. Voici la structure que je propose :
    Nom : log.png
Affichages : 553
Taille : 8,8 Ko

    Dans le tJavaRow, il y aurait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    context.setProperty("compteur",new Integer(Integer.parseInt(((String)context.getProperty("compteur")))+1).toString());
    Puis dans le tMap, il y aurait le filtre suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Integer.parseInt(((String)context.getProperty("compteur"))) < 2


  15. #15
    Membre régulier Avatar de SebastienM
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    310
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 310
    Points : 86
    Points
    86
    Par défaut
    Il ne passe pas dans les liens :



    L'erreur que je génère se situe dans le tSystem2 avec un "cd (...)" au lieu de "cmd (...)"

  16. #16
    Membre averti Avatar de bouvda
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    252
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 252
    Points : 318
    Points
    318
    Par défaut
    En effet...je viens de tester (j'avais testé rapidement avec des tWarn) et j'ai le même problème . En fait dès qu'une exception Java est levée elle semble agir comme un tDie : le tLogCatcher la traite puis le job se termine.

  17. #17
    Membre régulier Avatar de SebastienM
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    310
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 310
    Points : 86
    Points
    86
    Par défaut
    Bon j'ai trouvé une solution ^^

    un petit mix de tout ce qui a été dit précédemment :
    - Initialiser une variable de contexte en début de Job -> context.setProperty("cpt_err","0");
    - Dans le tLogcatcher créé un lien main vers un tjavaRow et mettre le code suivant : context.setProperty("cpt_err",""+(Integer.parseInt(context.getProperty("cpt_err"))+1));
    - Créer un lien "if" sur le tMysqlRow à partir du tLogcatcher avec le code suivant : Integer.parseInt(context.getProperty("cpt_err"))<2

    Et miracle ^^
    Bon, il y a moyen de faire plus propre mais bon

    Merci de votre aide.

  18. #18
    Membre averti Avatar de bouvda
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    252
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 252
    Points : 318
    Points
    318
    Par défaut
    Citation Envoyé par SebastienM
    Bon j'ai trouvé une solution ^^

    un petit mix de tout ce qui a été dit précédemment :
    - Initialiser une variable de contexte en début de Job -> context.setProperty("cpt_err","0");
    - Dans le tLogcatcher créé un lien main vers un tjavaRow et mettre le code suivant : context.setProperty("cpt_err",""+(Integer.parseInt(context.getProperty("cpt_err"))+1));
    - Créer un lien "if" sur le tMysqlRow à partir du tLogcatcher avec le code suivant : Integer.parseInt(context.getProperty("cpt_err"))<2

    Et miracle ^^
    Merci pour l'info .

    Citation Envoyé par SebastienM
    Bon, il y a moyen de faire plus propre mais bon
    On va s'en contenter pour l'instant. Et puis si je suis motivé un peu plus tard je me pencherai dessus plus sérieusement voire je ferai un petit composant qui va bien (mais bon il faut être motivé...).

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Redirection des logs pix vers postgres
    Par rbila.bessam dans le forum PostgreSQL
    Réponses: 0
    Dernier message: 19/06/2015, 17h55
  2. redirection des logs à travers syslog.conf
    Par rezguiinfo dans le forum RedHat / CentOS / Fedora
    Réponses: 0
    Dernier message: 11/03/2015, 17h39
  3. Redirection des logs Cron
    Par 0edin0 dans le forum Administration système
    Réponses: 2
    Dernier message: 12/05/2014, 08h56
  4. Redirection des logs d'Apache
    Par Rayndell dans le forum Apache
    Réponses: 3
    Dernier message: 04/05/2007, 09h13
  5. Gestion des .log sous Oracle
    Par SANOORA dans le forum Administration
    Réponses: 10
    Dernier message: 08/11/2004, 09h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo