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

Entrée/Sortie Java Discussion :

Ecrire un log


Sujet :

Entrée/Sortie Java

  1. #1
    Membre confirmé
    Homme Profil pro
    Technophile Web
    Inscrit en
    Mai 2007
    Messages
    930
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Technophile Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 930
    Points : 467
    Points
    467
    Par défaut Ecrire un log
    Bonjour,

    J'aurais besoin d'un petit coup de main siouplait.
    je suis en train d'écrire une appli java qui parfois enregistre dans un fichier des comentaires.
    Pour des raisons, qui serait longues à expliquer, j'ai besoin que cette écriture se fasse via une seule méthode static (j'ai choisi write(texteAEcrire).
    Donc nous voila ici, j'ai rédiger une classe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    package com.datalion.zsamurai.util;
     
    import java.io.File;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.util.Calendar;
    import java.util.GregorianCalendar;
     
    public class Log 
    {
    	private static Log instance = null;
    	private String path;
    	private File file;
    	private FileWriter writer;
    	private Log(String uri) throws IOException
    	{
    		this.path = "/var/log/";
    		String[] name = new File (".").getCanonicalPath().split("/");
    		this.path+=name[name.length-1];
    		this.path+="/";
    		if(uri==null)
    		{
    			this.path += Date.getDate('-')+".log";
    		}
    		else
    		{
    			this.path+=uri+".log";
    		}
    		System.out.println(this.path);
    		this.file=new File(this.path);
    		this.writer= new FileWriter(this.file,this.file.exists());
    	}
    	public static Log getInstance(String uri) throws IOException
    	{
    		if(Log.instance == null)
    		{
    			Log.instance = new Log(uri);
    		}
    		return Log.instance;
    	}
    	public static void write(String uri, String str) throws IOException 
    	{
    		Log.getInstance(uri).writer.write(str+"\n");
    	}
    	public static void close(String uri) throws IOException
    	{
    		Log.getInstance(uri).writer.flush();
    	}
    }
    mais elle ne répond pas exactement à mes attentes dans la mesure où je suis obligé, dans ma classe principale de faire appel à Log.close().
    Or comme mes besoins le spécifie, j'ai besoin de ne pas faire appel à cette méthode.
    Y a t'il moyen de définir une méthode qui soit appelé automatiquement (genre un destructeur()) ?
    Enfait, j'ai choisi java parce que j'avais déjà des classes me permettant de parser des flux HTML, par exemple. Mais dans d'autres langages, en php par exemple, je peux faire en sorte de ne pas faire appel à cet méthode.

    PS : lorsque je ne fais pas appel à la méthode le fichier est créer mais pas le contenu (pas l'écriture dans le fichier)

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Et l'API Log4j ne te satisfait pas ? Elle est utilisée à une écrasante majorité pour les log. Ta classe "Log" peut utiliser Log4j, et tu n'as plus à t'occuper de "close".

  3. #3
    Membre confirmé
    Homme Profil pro
    Technophile Web
    Inscrit en
    Mai 2007
    Messages
    930
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Technophile Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 930
    Points : 467
    Points
    467
    Par défaut
    en bref, tu me dis d'utiliser une API déjà fait
    alors que je me suis fait *** à la faire
    et que je touche presque au but ?

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    280
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 280
    Points : 344
    Points
    344
    Par défaut
    dinobogan a raison, tu devrais utiliser log4j.
    C'est une API tout ce qu'il de plus simple et standard et avec bien plus de possibilite que ton code.
    De plus vue ton code, j'ai pas l'impression qu'il soit thread safe pour les ecriture dans tes fichier log.


    ---
    Farid

  5. #5
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Citation Envoyé par sliderman Voir le message
    en bref, tu me dis d'utiliser une API déjà fait
    alors que je me suis fait *** à la faire
    et que je touche presque au but ?
    Oui, c'est bien ça
    Il est vrai que ça fait toujours plaisir de réinventer la roue, mais autant se concentrer sur les vrais problèmes de l'application.

Discussions similaires

  1. Réponses: 6
    Dernier message: 31/08/2012, 16h44
  2. Ecrire des logs binaires avec log4j
    Par kain_tn dans le forum Logging
    Réponses: 10
    Dernier message: 22/07/2010, 11h27
  3. Ecrire dans un fichier log
    Par Krispy dans le forum Langage
    Réponses: 1
    Dernier message: 19/05/2006, 18h57
  4. ne pas ecrire dans les fichier log
    Par HULK dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 07/04/2006, 09h22
  5. [Tomcat] ecrire dans le fichier log de tomcat
    Par dietrich dans le forum Tomcat et TomEE
    Réponses: 21
    Dernier message: 30/01/2006, 09h45

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