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

Développement de jobs Discussion :

Générer un fichier log


Sujet :

Développement de jobs

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 20
    Points : 20
    Points
    20
    Par défaut Générer un fichier log
    Bonjour,

    Je travail sur un projet de migration de données, où je dois manipuler plusieurs tables...etc. Après cette migration je veux avoir un fichier log (un pour chaque table) qui contient toutes les transformations, mise à jour apportées et éventuellement les erreurs survenus lors de la migration.

    Je voudrais donc savoir s'il est possible de générer un fichier log avec Talend ?
    si oui, comment procéder ?

    Merci par avance.

  2. #2
    Membre éprouvé
    Homme Profil pro
    Architecte Décisionnel
    Inscrit en
    Février 2008
    Messages
    866
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte Décisionnel

    Informations forums :
    Inscription : Février 2008
    Messages : 866
    Points : 1 260
    Points
    1 260
    Par défaut
    Bonjour,

    De mon coté, j'utilise les sorties shells pour générer mes fichiers de log (une pour la sortie standard, une pour la sortie erreur) en redirigeant donc les sorties du shell qui lance la commande java.

    Pour les infos sur l'avancement des jobs, le nombre de lignes traitées ou des infos fonctionnelles, j'utilise des tJava en faisant des System.out.println, qui arrivent donc dans la sortie standard du shell.

    Nicolas

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 20
    Points : 20
    Points
    20
    Par défaut
    Bonjour,

    Dans mon projet, je dois insérer des tables V2 dans des tables V5, après ces insertions, je voudrais avoir un fichier log pour pouvoir :
    1: Savoir l'état de l'exécution (Date et heure d'exécution, nbr de ligne traitées)
    2: Les traitement apportés (Pour pouvoir repérer les ligne insérées dans la nouvelle table avec "id_v2" pour l'identifiant dans la table de la V2, "id_v5" l'id correspondant dans la table de la v5)

    Mon fichier log sera donc composé de :
    Date et heure d'exécution
    Nbr de ligne traitées
    id_V2
    id_V5

    Pouvez vous me dire comment je peux avoir ce fichier ?
    en faite j'ai quelques piste( avec tFlowMeter,tlogcatcher, tstatcatche ) mais je sais pas trop comment faire ??

  4. #4
    Membre éprouvé
    Homme Profil pro
    Architecte Décisionnel
    Inscrit en
    Février 2008
    Messages
    866
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte Décisionnel

    Informations forums :
    Inscription : Février 2008
    Messages : 866
    Points : 1 260
    Points
    1 260
    Par défaut
    Ok, pour faire ça, j'ai utilisé le composant tStatCatcher, relié à un tMap puis à un tOracleOutput.
    Ce Subjob doit être placé indépendamment dans chacun des jobs.

    Le tStatCatcher génère une ligne au début et à la fin du job, avec les infos sur la date et l'heure d'exécution notamment (ainsi que le statut).
    Je récupère l'info sur le nombre de lignes traitées en utilisant les variables de ce type : ((Integer)globalMap.get("tFileInputDelimited_1_NB_LINE"))

    Nicolas

  5. #5
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Points : 4 314
    Points
    4 314
    Par défaut
    Pour avoir ces logs, tu vas devoir maintenir les comptages (ou les récupérer automatiquement des composants Talend), et écrire dans des fichiers : le choix ne manque pas (tFileOutputPositionnal, tFileOutputDelimited, etc.)

    Si tu veux quelque chose qui s'approche d'un vrai logging dans des jobs Java, j'ai déposé sur Talend Exchange un ensemble de composants pour utiliser Log4J.
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 37
    Points : 27
    Points
    27
    Par défaut
    Salut!

    Merci pour la soluce Nico, ça m'a pas l'air mal du tout !

    Par contre connaitrais-tu un moyen pour récupérer une des valeurs traitées pour la mettre dans les tStatCatcher?

    Dans mon cas, je l'ai relié à un tFilterRow, pour qu'il ne récupère que les 'failure' et les envoie dans un fichier csv de log... Mais j'aimerais que dans les données renvoyées, il me donne aussi le fichier lu ainsi que l'id du champ traité... Comme le schéma du statCatcher n'est pas indéfinissable je ne sais trop comment procéder...

    Merci

  7. #7
    Membre éprouvé
    Homme Profil pro
    Architecte Décisionnel
    Inscrit en
    Février 2008
    Messages
    866
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte Décisionnel

    Informations forums :
    Inscription : Février 2008
    Messages : 866
    Points : 1 260
    Points
    1 260
    Par défaut
    Pour la gestion des rejets, j'envoie ça dans une table, avec toutes les infos qui vont bien. Mais tu peux effectivement les envoyer dans un fichier de la même façon.
    Mais je ne penses pas que tu puisses gérer ça via le tStatCatcher. Il faut bien dissocier les infos du niveau du job gérées avec le tStatCatcher (Statut de fin de job, durée, heure de début et de fin, nombre de lignes traitées, nombre de rejets...), des infos de rejets de niveau enregistrement (id de la ligne qui a posé problème, valeur en cause, ...).

    Concernant les rejets, cela dépend de la façon dont tu les récupères (sortie reject d'un tBaseOutput, flux spécifique d'un tMap, sortie rejet d'un tFileInput, ...) mais globalement il est toujours possible de passer via un tMap afin de formater la sortie comme tu le souhaites et donc récupérer les infos dont tu as besoin dans le fichier de log des rejets. (comme le nom du fichier lu et l'id de la ligne).

    Nicolas

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 37
    Points : 27
    Points
    27
    Par défaut
    Bon je suis passé par un tMap avec la fleche de rejet vers un fichier txt, pour voir (j'ai mis un string à la place d'un integer pour voir si l'erreur est detectée!)

    Résultat:
    Pas d'erreur issue ni du tStatCatcher, ni du rejet tMap...
    Cependant, dans le prompt Talend j'ai bien un 'For input string: Meuh' (rien d'autre ne m'est passé par la tête désolé :p), et la ligne n'a pas été insérée dans ma base..

    Edit: Apres re-recherche, la ligne à bien été insérée, mais avec 0 comme valeur, ça n'a pas tenu compte du string, et à mis une valeur à la place... (0 est la vraie valeur, mais ça doit être arbitraire, rien n'est renseigné en tant que valeur par défaut...)

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 64
    Points : 52
    Points
    52
    Par défaut
    Désolé de m'imisser dans la conversation mais dans mon cas je voudrai récupérer les logs du traitement de plusieurs tables et donc le nom de la table en cours de traitement.
    Quelle varriable peut contenir cette info ?

    J'utilise, comme conseillé, le tstatcatcher qui fait ce que je veux sauf pour ma question.

    Merci

  10. #10
    Membre éprouvé
    Homme Profil pro
    Architecte Décisionnel
    Inscrit en
    Février 2008
    Messages
    866
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte Décisionnel

    Informations forums :
    Inscription : Février 2008
    Messages : 866
    Points : 1 260
    Points
    1 260
    Par défaut
    Citation Envoyé par TontonSre Voir le message
    Bon je suis passé par un tMap avec la fleche de rejet vers un fichier txt, pour voir (j'ai mis un string à la place d'un integer pour voir si l'erreur est detectée!)

    Résultat:
    Pas d'erreur issue ni du tStatCatcher, ni du rejet tMap...
    Cependant, dans le prompt Talend j'ai bien un 'For input string: Meuh' (rien d'autre ne m'est passé par la tête désolé :p), et la ligne n'a pas été insérée dans ma base..

    Edit: Apres re-recherche, la ligne à bien été insérée, mais avec 0 comme valeur, ça n'a pas tenu compte du string, et à mis une valeur à la place... (0 est la vraie valeur, mais ça doit être arbitraire, rien n'est renseigné en tant que valeur par défaut...)
    Le string à la place de l'integer, c'est dans un fichier en entrée ?
    Si c'est le cas, a priori il suffit de mettre le lien de rejet sur le tFileInput.

  11. #11
    Membre éprouvé
    Homme Profil pro
    Architecte Décisionnel
    Inscrit en
    Février 2008
    Messages
    866
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte Décisionnel

    Informations forums :
    Inscription : Février 2008
    Messages : 866
    Points : 1 260
    Points
    1 260
    Par défaut
    Citation Envoyé par blackdespe Voir le message
    Désolé de m'imisser dans la conversation mais dans mon cas je voudrai récupérer les logs du traitement de plusieurs tables et donc le nom de la table en cours de traitement.
    Quelle varriable peut contenir cette info ?
    Si je comprends bien ton soucis, c'est d'arriver à identifier quel est le traitement qui a généré l'erreur ?

    En fait j'ai le même soucis, et je n'ai pas encore tenté de le résoudre, mais je me disais qu'en utilisant un tLogCatcher on pouvait trapper une éventuelle remontée d'erreur et ajouter par exemple le nom du job à la sortie ?

    Nicolas

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 64
    Points : 52
    Points
    52
    Par défaut
    En fait mon souci est de récupérer le nb de lignes traitées par le job pour chaque table créée et donc le nom de ces table.
    Exemple du résultat que je veux obtenir :
    <nom de la table>, <Statut du traitement>, <nb de lignes>, <Date de mise à jour>
    Pour info j'ai un job pour plusieurs tables donc le nom du job ne correspond pas au nom des tables. La seule info que je n'arrive pas avoir est donc le nom de la table.

    Merci d'avance

  13. #13
    Membre éprouvé
    Homme Profil pro
    Architecte Décisionnel
    Inscrit en
    Février 2008
    Messages
    866
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte Décisionnel

    Informations forums :
    Inscription : Février 2008
    Messages : 866
    Points : 1 260
    Points
    1 260
    Par défaut
    Citation Envoyé par blackdespe Voir le message
    En fait mon souci est de récupérer le nb de lignes traitées par le job pour chaque table créée et donc le nom de ces table.
    Exemple du résultat que je veux obtenir :
    <nom de la table>, <Statut du traitement>, <nb de lignes>, <Date de mise à jour>
    Pour info j'ai un job pour plusieurs tables donc le nom du job ne correspond pas au nom des tables. La seule info que je n'arrive pas avoir est donc le nom de la table.
    Ok, pour faire ça, je ne pense pas que tu puisses utiliser juste un composant qui te remonte toutes les infos.
    J'utiliserais par exemple un tJava déclenché sur "OnComponentOk" sur chaque composant tBaseOutput, qui fait un System.out.println() en lui passant les infos venant des variables globales de ces mêmes composants.

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 64
    Points : 52
    Points
    52
    Par défaut
    Ok pourquoi pas mais encore une petite question quelle est la variable globale contenant le nom de la table d'un composant tBaseOutput ??

  15. #15
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Points : 4 314
    Points
    4 314
    Par défaut
    Citation Envoyé par blackdespe Voir le message
    Ok pourquoi pas mais encore une petite question quelle est la variable globale contenant le nom de la table d'un composant tBaseOutput ??
    Il n'y en a pas

    Deux solutions :
    - le nom de la table dans ton composant est paramétré par un "contexte" : dans ce cas, c'est cette variable de contexte qui est "globale" (et tu ne passes dans ce cas pas par la globalMap)
    - tu veux utiliser la globalMap : tu dois dans l'ordre :
    mettre la valeur de la table dans cette Map
    la récupérer au niveau du tBase... (champ table) depuis la Map
    la récupérer dans le tJava de logging depuis cette même Map
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

  16. #16
    Membre éprouvé
    Homme Profil pro
    Architecte Décisionnel
    Inscrit en
    Février 2008
    Messages
    866
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte Décisionnel

    Informations forums :
    Inscription : Février 2008
    Messages : 866
    Points : 1 260
    Points
    1 260
    Par défaut
    Citation Envoyé par blackdespe Voir le message
    Ok pourquoi pas mais encore une petite question quelle est la variable globale contenant le nom de la table d'un composant tBaseOutput ??
    Dans ce que je propose, il y a un tJava par composant de mise à jour de la base de données. Le nom de la table correspondant peut donc être mis en dur dans le composant tJava.

  17. #17
    Nouveau Candidat au Club
    Homme Profil pro
    conducteur routier
    Inscrit en
    Janvier 2016
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : conducteur routier
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2016
    Messages : 1
    Points : 0
    Points
    0
    Par défaut problème avec un fichier net.log
    bonsoir j'ai un problème avec un fichier net.log dans un de mai jeux sur mon pc "euro truck simulator" http://forum.realtrucksim.com/viewtopic.php?f=37&t=167 https://www.facebook.com/photo.php?f...4438420&type=3 svp aidé moi merci

Discussions similaires

  1. Générer un fichier log
    Par ali_khazri dans le forum Statistiques
    Réponses: 2
    Dernier message: 24/04/2012, 17h27
  2. Générer un fichier log dans une procédure stockée
    Par aelmalki dans le forum PL/SQL
    Réponses: 1
    Dernier message: 14/04/2011, 00h29
  3. Réponses: 4
    Dernier message: 30/12/2008, 17h57
  4. Réponses: 2
    Dernier message: 26/02/2003, 11h47
  5. [] [Stratégie] Comment créer un fichier log
    Par Skeezo dans le forum Installation, Déploiement et Sécurité
    Réponses: 4
    Dernier message: 16/09/2002, 18h30

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