Question

J'implémente un serveur de journalisation en C ++; qui accepte les messages de journalisation d'un programme Java (via log4j socket appender). Comment lire ces objets de journalisation Java en C ++?

Était-ce utile?

La solution

Vous devez configurer l’appender log4j pour envoyer des messages au format XML. Ensuite, il s’agit simplement de lire XML en C ++.

Autres conseils

Les objets java sérialisés sont un flux d'octets nécessitant des méta-informations provenant de Java Runtime pour pouvoir reconstruire les objets java. Sans ces méta-informations disponibles dans le système, vous devez les ajouter vous-même, ce qui est fastidieux et sujet aux erreurs. Je partage l’idée d’envoyer du XML à la place - c’est pour cela que la sérialisation XML a été inventée:)

La protobuf est un autre moyen très rapide de procéder à une sérialisation indépendante de la langue. Les proto-fichiers (méta-fichiers décrivant vos structures de données) sont compilés à l'aide d'un protocole qui écrit le code IO pour différentes langues cibles.

Je l'utilise dans mon application et j'ai effectué des analyses comparatives , qui pourrait vous donner un indice si cela sert votre but. Le seul inconvénient que je connaisse est que protobuf ne gère pas du tout les références. Si l'un de vos objets contient deux fois le même objet, il sera écrit deux fois au lieu d'une seule fois avec une référence à l'instance précédente (comme dans le cas de la sérialisation Java).

En ce qui concerne votre question initiale, je suis d’accord avec Thorbjørn pour affirmer que la lecture et l’écriture d’objets Java sérialisés seront trop difficiles et susceptibles de générer des erreurs.

Si vous envisagez d'adopter la méthode du prototypage, n'hésitez pas à utiliser ce fichier protobuf d’événement de journalisation comme démarreur.

json est la meilleure solution pour ce type de problèmes.

Log4cxx est un port Log4j vers C ++, vous pouvez peut-être en tirer quelques idées ou même l’utiliser directement?

JSON! JSON! JSON! JSON!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top