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

Logging Java Discussion :

Ecrire des logs binaires avec log4j


Sujet :

Logging Java

  1. #1
    Expert éminent Avatar de kain_tn
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 564
    Points : 7 285
    Points
    7 285
    Par défaut Ecrire des logs binaires avec log4j
    Bonjour,

    je voudrais savoir si quelqu'un connait une façon simple d'écrire des logs au format binaire avec log4j?

    je n'ai pas trouvé grand chose sur le sujet jusqu'à présent, et je voudrais pouvoir garder la possibilité de passer du mode log binaire au mode normal simplement en modifiant le fichier de configuration de log4j...

    Merci d'avance!
    Copier c'est copier; voler c'est vendre un CD une vingtaine d'euros!


    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #include <stdio.h>
     
    int main(int argc, char **argv) {
     
        printf("So long, and thanks for the fish, Dennis...\n");
        return 0;
    }

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    qu'est-ce que tu entends pas log binaire? Par définition, des logs, c'est du texte :/

  3. #3
    Expert éminent Avatar de kain_tn
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 564
    Points : 7 285
    Points
    7 285
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    qu'est-ce que tu entends pas log binaire? Par définition, des logs, c'est du texte :/
    Oui en effet

    Si je fais par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    logger.log(Level.INFO, "Message d'information");
    et que je passe par un FileAppender, mon message sera loggué comme ceci dans un fichier:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    2010-07-21 10:37:39,654 INFO [main] Main - Message d'information
    Ce que je voudrais c'est que le message final (toute la chaine ci-dessus avec la date etc) puisse être écrit comme des données brutes dans un fichier (pour avoir un gain de place), seulement je ne veux pas avoir à modifier le listing tout en haut.

    Je ne sais pas si je suis très clair
    Copier c'est copier; voler c'est vendre un CD une vingtaine d'euros!


    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #include <stdio.h>
     
    int main(int argc, char **argv) {
     
        printf("So long, and thanks for the fish, Dennis...\n");
        return 0;
    }

  4. #4
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Il te faudra probablement écrire ton propre appender en te basant sur un appender existant.

    http://www.javaworld.com/javaworld/j...0-toolbox.html
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  5. #5
    Expert éminent Avatar de kain_tn
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 564
    Points : 7 285
    Points
    7 285
    Par défaut
    C'est ce que je pensais. Je voulais juste éviter d'avoir à réinventer la roue...
    Merci
    Copier c'est copier; voler c'est vendre un CD une vingtaine d'euros!


    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #include <stdio.h>
     
    int main(int argc, char **argv) {
     
        printf("So long, and thanks for the fish, Dennis...\n");
        return 0;
    }

  6. #6
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 936
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 936
    Points : 4 356
    Points
    4 356
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    qu'est-ce que tu entends pas log binaire? Par définition, des logs, c'est du texte :/
    la seule notion implicite dans la notion de log est l'écriture séquentielle d'informations horodatée…

    que ce soit du texte ou autre chose…

  7. #7
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    et si tu regarde les méthodes des apis logs, ce informations sont toujours textuelles.


    Ceci dit, pour le gain de place, le mieux est de prendre un rollingFileAppender, qui va cycler entre plusieurs fichiers, et lui demander de compresser les vieux fichiers
    http://logging.apache.org/log4j/comp...eAppender.html

  8. #8
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 936
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 936
    Points : 4 356
    Points
    4 356
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    et si tu regarde les méthodes des apis logs, ce informations sont toujours textuelles.
    toutes les méthodes prennent des "Object message" en paramètre par des String…

  9. #9
    Expert éminent Avatar de kain_tn
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 564
    Points : 7 285
    Points
    7 285
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    Ceci dit, pour le gain de place, le mieux est de prendre un rollingFileAppender, qui va cycler entre plusieurs fichiers, et lui demander de compresser les vieux fichiers
    http://logging.apache.org/log4j/comp...eAppender.html
    Mais de ce que j'en ai compris, le RollingFileAppender est une sorte d'appender avec pertes: on fixe un index maximum, et quand ce maximum est atteint, les cycle recommence et les fichiers les plus anciens sont remplacés.
    Finalement le gain de place ne tient que du fait que la taille maximale des fichiers et leur nombre sont fixés non?

    Ça peut être intéressant dans le cas de logs de DEBUG ou pour faire un système de journalisation où seuls les derniers évènements comptent (un peu comme pour les fichiers WAL de PostgreSQL).
    Copier c'est copier; voler c'est vendre un CD une vingtaine d'euros!


    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #include <stdio.h>
     
    int main(int argc, char **argv) {
     
        printf("So long, and thanks for the fish, Dennis...\n");
        return 0;
    }

  10. #10
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    non le rolling a pour but de faire plusieurs fichier. Maintenant suivant la manière dont tu nomme les fichier et le paramétrage, tu pourra limiter le nombre de fichier, mais ce n'est pas le but recherché dans ton cas. L'avantage de cet appender (cf la doc) c'est que les "ancien" fichiers peuvent être compressés par l'appender, ce qui diminue fortement leur taille sur le disque (le fichiers de logs se compressent très bien). Tu pourrais avoir ainsi le "log du jour" en clair qui occuperais 20M du le disque puis à coté tous les logs de l'année courante, qui occuperaient chacun quelques 100aine de Ks (le taux de compression dépendra du contenu du log bien sur). L'exemple montré dans la javadoc crée un fichier par mois.

  11. #11
    Expert éminent Avatar de kain_tn
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 564
    Points : 7 285
    Points
    7 285
    Par défaut
    Ok merci! Je vais regarder ça alors
    Copier c'est copier; voler c'est vendre un CD une vingtaine d'euros!


    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #include <stdio.h>
     
    int main(int argc, char **argv) {
     
        printf("So long, and thanks for the fish, Dennis...\n");
        return 0;
    }

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

Discussions similaires

  1. Que faire des logs binaires ?
    Par frocket dans le forum Administration
    Réponses: 8
    Dernier message: 02/06/2012, 07h57
  2. ecrire des programme console avec VB6
    Par sofiane80 dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 19/06/2009, 10h52
  3. Ecrire un fichier binaire avec AS3
    Par f56bre dans le forum ActionScript 3
    Réponses: 2
    Dernier message: 16/12/2008, 19h49
  4. Supprimer des vieux fichiers avec log4j
    Par ecthelion dans le forum Logging
    Réponses: 1
    Dernier message: 24/11/2007, 11h48
  5. Ecrire un fichier binaire avec des caractères
    Par stokastik dans le forum C
    Réponses: 18
    Dernier message: 17/08/2006, 17h40

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