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 :

probleme avec la classe SMTPAppender


Sujet :

Logging Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 69
    Par défaut probleme avec la classe SMTPAppender
    voila mon but est d envoyer un mail d'erreur avec des renseignements attachés a ce mail
    pour cela j'utilise le code suivant :
    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
     
     
                pattern = "User : " + System.getProperty("user.name") + "%n";
                pattern += "PC : " + InetAddress.getLocalHost().getHostName() + "%n"; // PC's name
                pattern += "Date : %d{ISO8601}%n"; // date + time
                pattern += "Milliseconds since the program start : %r%n"; // milliseconds since the program start
                pattern += "Location : %l%n"; // location of event
                pattern += "Messsage: %m%n"; // message
                layout = new PatternLayout(pattern);
                SMTPAppender smtpAppender = new SMTPAppender();
                smtpAppender.setFrom(System.getProperty("user.name"));
                smtpAppender.setSMTPHost("SMTPHub07.conti.de");
                smtpAppender.setSubject("IP3 Error");
                smtpAppender.setTo("uid30862");
                smtpAppender.setLayout(layout);
                smtpAppender.activateOptions();
                errorLogger.addAppender(smtpAppender);
    le probleme c est que je souhaiterai aussi envoyer une piece jointe avec ce mail (image). Ca j'arrive a le faire avec cette partie de code :
    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
    //send mail           
                Multipart multipart = new MimeMultipart();           
                //Mail and server proprieties
                Properties prop = System.getProperties();
                prop.put("mail.smtp.host", "SMTPHub07.conti.de");
                Session session = Session.getDefaultInstance(prop,null);         
                Message message = new MimeMessage(session);
                message.setFrom(new InternetAddress(System.getProperty("user.name")));
                InternetAddress[] internetAddresses = new InternetAddress[1];
                internetAddresses[0] = new InternetAddress(mailto);
                message.setRecipients(Message.RecipientType.TO,internetAddresses);
                message.setSubject("Test");
                message.setHeader("X-Mailer", MAILER_VERSION);           
                // creation partie principale du message
                BodyPart messageBodyPart = new MimeBodyPart();
                messageBodyPart.setText("blablabla");
                multipart.addBodyPart(messageBodyPart);
                // creation et ajout de la piece jointe
                messageBodyPart = new MimeBodyPart();
                DataSource source = new FileDataSource("c:/data/plop.png");
                messageBodyPart.setDataHandler(new DataHandler(source));
                messageBodyPart.setFileName("c:/data/plop.png");
                multipart.addBodyPart(messageBodyPart);
                // add two parts of mail
                message.setContent(multipart);
                //send logmail
                Transport.send(message);
    Maintenant ce que je n'arrive pas à faire c'est d'avoir le corps du 1er mail avec la piece jointe du deuxieme....

  2. #2
    Membre expérimenté
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mars 2002
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Mars 2002
    Messages : 192
    Par défaut
    Bonjour,

    Je ne comprends pas très bien ce que tu veux faire.
    Tu veux utiliser un Appender Log4J, en l'occurence un SMTPAppender et attacher un fichier au message de log ?

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 69
    Par défaut
    oui je veux attacher un fichier joint a ce log que j envoi par mail grace au smptappender.

    engros je veux creer le log,
    l'envoye par mail avec une piece jointe. Pour resumer
    help me please

  4. #4
    Membre expérimenté
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mars 2002
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Mars 2002
    Messages : 192
    Par défaut
    Ben tel que je vois pas bien comment tu peux faire.

    L'API de log4j ne prévoit pas dans la log d'associer un objet quel qu'il soit (la pièce attachée dans ton cas) à un appel de logger.

    Maintenant, si vraiment tu ne peux pas faire autrement, si tu étends la classe SMTPAppender, tu peux peux être mettre à dispo la pièce attachée quelque part et la récupérer dans ton appender spécifique. Ton code coté client ressemblerait à celà.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (someCondition) {
        attachmentHandler.push(someDocument);
        logger.error("the system is going down...")
        attachmentHandler.pop();
    }
    En gros, ton Appender spécifique, regarderais si tu as quelque chose sur la pile d'attachements et l'ajouterai au mail.
    Attention, à ce genre de solution qui demande de la synchronisation.

    Comme ça à chaud je vois pas trop d'autre choses.

  5. #5
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 69
    Par défaut
    ta solution est bien trop complexe pour moi a ce stade (je suis pas un expert java..))



    sinon une sol qui marche mais qu a moitié
    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
    //send error logmail marche mais sans la location de l erreur
                pattern = "User : " + System.getProperty("user.name") + "%n";
                pattern += "PC : " + InetAddress.getLocalHost().getHostName() + "%n"; // PC's name
                pattern += "Date : %d{ISO8601}%n"; // date + time
                pattern += "Milliseconds since the program start : %r%n"; // milliseconds since the program start
                pattern += "Location : %l%n"; // location of event
                pattern += "Messsage: %m%n"; // message  
                layout = new PatternLayout(pattern);
                System.out.println(layout.format(new LoggingEvent("", cat, Priority.ERROR,getErrorLogMessage(exception), exception)));
                Multipart multipart = new MimeMultipart();           
                //Mail and server proprieties
                Properties prop = System.getProperties();
                prop.put("mail.smtp.host", "SMTPHub07.conti.de");
                Session session = Session.getDefaultInstance(prop,null);           
                Message message = new MimeMessage(session);
                message.setFrom(new InternetAddress(System.getProperty("user.name")));
                InternetAddress[] internetAddresses = new InternetAddress[1];
                internetAddresses[0] = new InternetAddress(mailto);
                message.setRecipients(Message.RecipientType.TO,internetAddresses);
                message.setSubject("error ip3");
                message.setHeader("X-Mailer", MAILER_VERSION);           
                BodyPart messageBodyPart = new MimeBodyPart();
                messageBodyPart.setText(layout.format(new LoggingEvent("", cat, Priority.ERROR,getErrorLogMessage(exception), exception)));
                multipart.addBodyPart(messageBodyPart);
                //add printscreen
                messageBodyPart = new MimeBodyPart();
                DataSource source = new FileDataSource("c:/data/plop.png");
                messageBodyPart.setDataHandler(new DataHandler(source));
                messageBodyPart.setFileName("c:/data/plop.png");
                multipart.addBodyPart(messageBodyPart);
                // add two parts of mail
                message.setContent(multipart);
                //send logmail
                Transport.send(message);
    mais je perds la location de l erreur.... pourquoi????
    c est le sujet de ce post la :
    http://www.developpez.net/forums/sho...92#post3480692

  6. #6
    Membre expérimenté
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mars 2002
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Mars 2002
    Messages : 192
    Par défaut
    Désolé, mais je ne vois plus très bien quel est le rapport entre ce que tu essaies de faire et une API de log.

    Tu es en train d'écrire une classe qui envoie un mail avec une pièce attachée.
    La construction de ton corps de texte peut être faite avec un simple MessageFormat auquel tu passeras quelques arguments.
    Pas besoin d'utiliser des classes d'une API de log particulière pour faire cela.

    Je pense qu'avant d'aller plus loin tu devrais te demander si :
    • tu as besoin d'un système de log,
    • tu veux utiliser certaines fonctionnalités de ce système de log pour certains niveaux d'erreurs,
    • ta gestion d'erreur (et donc de mail) n'est pas décorrélée de la log

    A partir de là, je pense que l'on pourras t'apporter des réponses.

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

Discussions similaires

  1. [débutant] probleme avec une classe arbre
    Par go_all_in dans le forum C++
    Réponses: 17
    Dernier message: 08/06/2006, 10h33
  2. [POO] Problème avec les classes
    Par peypey dans le forum Langage
    Réponses: 8
    Dernier message: 03/05/2006, 15h05
  3. probleme avec la classe vector
    Par elekis dans le forum Langage
    Réponses: 4
    Dernier message: 12/04/2006, 16h25
  4. Probleme avec une class template
    Par lenectar dans le forum Langage
    Réponses: 2
    Dernier message: 01/03/2006, 10h49
  5. probleme avec la classe calendar
    Par fatmax dans le forum Collection et Stream
    Réponses: 6
    Dernier message: 04/10/2005, 17h04

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