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

Talend Discussion :

Purge de fichier de log


Sujet :

Talend

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2019
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2019
    Messages : 5
    Par défaut Purge de fichier de log
    Bonjour la communauté
    Je me décide à poster car après a voir essoré Google, je n'arrive pas à trouver une manière de faire
    L'objectif est simple : supprimer tous les fichiers log qui ont plus de 6mois (à savoir que plusieurs dizaine de fichier log sont généré par jour)

    Format des fichiers log : [LOG][160908]__2023-11-15_14-10-01_nom_du_job.log

    - tFileList check mon répertoire
    - tIterateToFlow me renvoi le nom des fichiers
    - tSetGlobalVar créer la variable date6m contenant la date du jour -6mois : TalendDate.addDate(TalendDate.getDate("yyyy-MM-dd"), "yyyy-MM-dd", -6, "MM") --> 2023-04-15
    - tMap pour filtrer

    -> et c'est à partir d'ici que ça coince
    Avec StringHandling.SUBSTR(row3.nom_fichier, 16, 10) je récupère la date contenu dans le nom --> 2023-11-15

    Dans l'idée, il faut donc que
    Si StringHandling.SUBSTR(row3.nom_fichier, 16, 10) > (String)globalMap.get("date6m")) -> envoi du fichier vers un tDelete

    J'ai testé pas mal de possibilités (compareDate/diffDate/ avec des parseDate), toutes ko, mais maintenant je sèche
    Si qqun avait une idée ....

    Par avance merci

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Bonjour,

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Pattern p = Pattern.compile("(\\[LOG\\]\\[\\d+\\]__)(\\d{4}-\\d{2}-\\d{2})(.+)"); 
    Matcher m = p.matcher((String) globalMap.get("...ton file list"));
    String fileDate = m.group(1);

    Tu utilises ensuite un trigger run if pour tester sur l'age pour la connexion sur le tFileDelete.


    A+.

  3. #3
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Pour les composants Talend:

    tFileList --iterate-->tJava--trigger run if -->tFileDelete

    Sinon il y a aussi le composant tFileProperties pour les details d'un fichier pour récupérer sa date de modification.

    A+.

  4. #4
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2019
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2019
    Messages : 5
    Par défaut
    Merci bcp @andry.aime pour tes pistes,
    Jai réussi dans le tMap avec :
    Integer.valueOf(StringHandling.EREPLACE((StringHandling.SUBSTR(row16.nom_fichier, 16, 10)), "-", "")) <
    Integer.valueOf((String)globalMap.get("date3m")) ? row14.nom_fichier :
    null

    MAIS, je penses ta piste du composant tFileProperties est largement plus approprié. Ce qui me permettrais de l'utiliser pour d'autres job avec des logs non formatés
    Et bien évidement ça coince aussi
    je n'arrive pas à trouver la manière de formater la date mtime_string, pour passer de Wed Nov 23 12:08:11 CET 2023 à 2023-11-23

    Si qqun avait une idée ????

    Merci d'avance

  5. #5
    Membre très actif Avatar de supergeoffrey
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2010
    Messages
    802
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2010
    Messages : 802
    Par défaut
    Tu peux utiliser directement java pour transformer le mtime en Date
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new java.util.Date(rowX.mtime)

  6. #6
    Membre très actif Avatar de supergeoffrey
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2010
    Messages
    802
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2010
    Messages : 802
    Par défaut
    Sinon j'ai fait un test en ligne de java


    Le format de date du mtime_string est "EEE MMM dd HH:mm:ss z YYYY".

  7. #7
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Bonjour,

    Tu peux utiliser directement la classe TalendDate.

    A+.

  8. #8
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2019
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2019
    Messages : 5
    Par défaut
    Bon ......
    J'ai résolu mon prob, c'est sans doute pas la solution la + propre ou la plus optimisée
    à partir du mtime_string (Thu Dec 07 09:05:03 CET 2023)

    Dans un tMap :

    Pour l'année :
    row7.mtime_string.contains("CEST") ?
    StringHandling.SUBSTR(row7.mtime_string, 26, 4) :
    StringHandling.SUBSTR(row7.mtime_string, 25, 4)

    Pour le mois :
    "Jan".equals(StringHandling.SUBSTR(row7.mtime_string, 5, 3)) ? "01" :
    "Feb".equals(StringHandling.SUBSTR(row7.mtime_string, 5, 3)) ? "02" :
    et ainsi de suite

    Pour le jour :
    StringHandling.SUBSTR(row7.mtime_string, 9, 2)


    Ensuite je concatène tt ça dans une variable et je compare via un lien IF à ma variable de ma date il y a 6 mois
    Integer.parseInt((String)globalMap.get("date_log")) < Integer.parseInt((String)globalMap.get("date6m"))

    et je finis avec un tFileDelete

  9. #9
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2019
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2019
    Messages : 5
    Par défaut
    La 1ère partie de mon job Talend concernant les fichiers étant résolu, je bute maintenant sur les Dossiers
    Dans la premières partie je supprime les fichiers dans mon répertoire principale et sous-répertoire
    Le but est maintenant de supprimer les répertoires vides

    Listage des répertoires dans mon répertoire principale
    -> tFileList (Répertoires) dans "D:/temp/"
    -> tIterateToFlow - column : folder / ((String)globalMap.get("tFileList_3_CURRENT_FILE"))
    -> tSetGlobalVar - clé: name_folder / Valeur : row3.folder

    J'obtiens bien la liste
    C'est a là que maintenant je coince :

    check chaque répertoire pour obtenir le nb de fichier qu'il contient
    -> tFileList (fichiers) dans "D:/temp/" + ((String)globalMap.get("name_folder"))
    -> tIterateToFlow - Column : nb_file / Valeur : ((Integer)globalMap.get("tFileList_5_NB_FILE"))
    -> lien IF avec ((Integer)globalMap.get("tFileList_5_NB_FILE")) == 0
    -> tFileDelete

    J'ai essayé bcp de possibilité et tjrs nok

Discussions similaires

  1. [tomcat 5] [paramétrage] fichier de log System.out.println
    Par Aldo dans le forum Tomcat et TomEE
    Réponses: 2
    Dernier message: 22/02/2005, 14h41
  2. automatiser la purge de repertoire .../LISTENER/log
    Par Mont-clair dans le forum Oracle
    Réponses: 8
    Dernier message: 09/02/2005, 11h35
  3. [Oracle 8i/Fichier de log] - fichier log pour analyse erreur
    Par shaun_the_sheep dans le forum Oracle
    Réponses: 4
    Dernier message: 25/01/2005, 19h06
  4. [Tomcat] Fichier de logs
    Par yolepro dans le forum Tomcat et TomEE
    Réponses: 4
    Dernier message: 22/03/2004, 16h20
  5. Fichiers de Log
    Par Mouse dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 10/05/2003, 18h06

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