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

Apache Discussion :

Rediriger logs vers programme java


Sujet :

Apache

  1. #1
    Membre averti Avatar de Rayndell
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    289
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 289
    Points : 323
    Points
    323
    Par défaut Rediriger logs vers programme java
    Bonjour !

    Je suis sur un projet qui nécessite de traiter les logs d'apache sans passer par la lecture de fichiers de logs. J'ai lu dans la doc qu'on pouvait rediriger les logs vers un programme en modifiant CustomLog access.log common par :

    CustomLog "|le chemin du programme avec les arguments" common.

    J'ai essayé de placer une commande java blablabla mais ça ne marche pas.

    Est-il possible de rediriger ces logs vers (plutôt qu'un programme exécutable) un programme java, qui doit si je ne m'abuse capter le flux d'entrée.

    Merci par avance.
    "Et tu comprendras pourquoi mon nom est l'Eternel, quand sur toi s'abattra la colère du Tout-puissant."

  2. #2
    Membre averti Avatar de Rayndell
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    289
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 289
    Points : 323
    Points
    323
    Par défaut
    Mouais. De toutes manières le fait de les rediriger vers un programme java n'est pas une idée follement enthousiasmante, étant donné qu'il faudra relancer la machine virtuelle à chaque log. Il semblerait toutefois que le pipe d'apache ne marche pas sous Windows.
    "Et tu comprendras pourquoi mon nom est l'Eternel, quand sur toi s'abattra la colère du Tout-puissant."

  3. #3
    Membre averti Avatar de Rayndell
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    289
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 289
    Points : 323
    Points
    323
    Par défaut
    Ah ben si. Mais pas chez moi. C'est consternant.
    "Et tu comprendras pourquoi mon nom est l'Eternel, quand sur toi s'abattra la colère du Tout-puissant."

  4. #4
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Tout pareil que Rayndell : rediriger directement vers une JVM, ça me semble moyen. Pour du Java, j'envisagerais 2 possibilités :
    - Rediriger vers un programme "léger" en C (donc rapide) qui forwarde la trace de log sur un socket réseau, et ce socket réseau, c'est ton programme Java.
    - Rediriger vers un fichier classique avec journalisation et le programme Java est déclanché périodiquement pour analyser les fichiers journalisés. Mais forcément, si tu veux de l'analyse en temps réel, cette solution ne convient pas.

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  5. #5
    Membre averti Avatar de Rayndell
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    289
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 289
    Points : 323
    Points
    323
    Par défaut
    En effet, la solution consiste à créer un exécutable c qui s'occupe d'envoyer les logs. Par contre, je n'arrive pas à trouver le moyen de récupérer les logs. J'ai tenté un petit programme C qui écrit simplement dans un fichier mais impossible de récupérer les logs dans l'entrée standard. Je mets mon code, histoire de voir si quelqu'un a une idée...

    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
     
    #include <stdio.h>
     
    int main(int argc, const char * const argv[]){
     
         FILE *fp;
     
         fp = fopen("truc.log", "w");
     
         char buffer[1000];
     
         scanf(buffer, stdin);
     
         fprintf(fp, buffer);
         fclose(fp);
         return 0;
    }
    A la place de scanf, j'ai essayé à peu près toutes les fonctions de la lib stdio, j'ai essayé de lire caractère par caractère, on dirait que apache fourni un format de log autre que stdin. Il est à noter que ce programme marche, inutile de le tester. Mais quand je veux rediriger mes logs en les pipant dessus, apache refuse de se lancer, tout bonnement. Aucun message d'erreur à part une boite de dialgue m'invitant poliment à aller me faire foutre.
    "Et tu comprendras pourquoi mon nom est l'Eternel, quand sur toi s'abattra la colère du Tout-puissant."

  6. #6
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Ouhla... Apache ne fournit pas d'exemple de logger custom ? Faut peut-être poser la question sur le forum C, je suis nul en C.

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  7. #7
    Membre averti Avatar de Rayndell
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    289
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 289
    Points : 323
    Points
    323
    Par défaut
    Autant pour moi... Ca marche avec la fonction fgets(buffer, 1000, stdin).

    Quant à ta question, apache ne fournit effectivement pas de logger standard sur lequel s'inspirer. Je suis également nul en C, c'est pour ça que j'en chie. Mais j'ai réussi à piper les logs sur mon prog, donc c forum est donc résolu. Merci de ton aide.

    POur ceux qui voudrait faire pareil, j'ai juste remplacé scanf par fgets(buffer, 1000, stdin);

    Voilà voilà. Pour le reste, j'irais voir mes bientôt nouveaux amis du forum C...
    "Et tu comprendras pourquoi mon nom est l'Eternel, quand sur toi s'abattra la colère du Tout-puissant."

  8. #8
    Membre averti Avatar de Rayndell
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    289
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 289
    Points : 323
    Points
    323
    Par défaut
    Désolé, j'ai supprimé le code, car il est possible que mon entreprise vende ce service. Désolé encore...
    "Et tu comprendras pourquoi mon nom est l'Eternel, quand sur toi s'abattra la colère du Tout-puissant."

  9. #9
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Citation Envoyé par Rayndell
    Si ça intéresse quelqu'un, voilà le code en C++ du programme qui envoie les informations de log d'Apache vers un serveur dédié par des sockets UDP
    Ca c'est sympa !

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 30/12/2011, 21h26
  2. Comment rediriger vers un URL à partir d'un programme Java ?
    Par selma89 dans le forum Débuter avec Java
    Réponses: 11
    Dernier message: 14/09/2011, 19h21
  3. Rediriger la sortie du put dans le log vers un fichier
    Par AlexFred dans le forum SAS Base
    Réponses: 2
    Dernier message: 30/11/2010, 12h08
  4. Rediriger le flux de log vers JSF
    Par pilate dans le forum Logging
    Réponses: 5
    Dernier message: 07/02/2010, 17h17
  5. Comment exporter un objet C++ vers un programme JAVA?
    Par Hamdi Hedhili dans le forum C++
    Réponses: 2
    Dernier message: 26/02/2008, 16h35

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