Dans notre entreprise, nous avons besoin de connecter toutes les demandes / réponses qui arrivent à notre serveur. À ce moment-là, nous utilisons XML comme mise en œuvre standard. Les fichiers journaux sont utilisés si nous devons déboguer / tracer une certaine erreur.
Je suis un peu curieux si nous passons à des tampons de protocole, car il sera binaire, quel sera le meilleur moyen de journaliser Demande / réponse au fichier? p>
par exemple: p> pour toute personne qui a utilisé des tampons de protocole dans votre application, comment enregistrer votre demande / réponse, juste au cas où nous en aurions besoin pour Objectif de débogage? p> p>
4 Réponses :
Si vous avez des besoins en concurrence pour la journalisation et la performance, je suppose que vous pourriez jeter vos données binaires au fichier tel quel, avec peut-être chaque enregistrement précédé d'une balise contenant une balise et une valeur de longueur afin que vous sachiez où cela Un peu de données se termine. Mais je m'empresse d'admettre que cela est très moche. Vous devrez écrire un utilitaire pour lire et analyser ce fichier et ne sera pas impuissant sans cet utilitaire. P>
Une solution plus raisonnable serait de jeter vos données binaires sous forme de texte. Je pense à des "lignes" de texte, à nouveau en commençant par toutes les informations de marquage que vous trouvez pertinentes, suivies d'informations de longueur en décimal ou en hex, suivi de nombreux octets hexagonaux que nécessaire pour vider votre tampon - Ainsi, vous pourriez vous retrouver avec quelques lignes assez longues. Mais puisque le fichier est structuré de ligne, vous pouvez utiliser des outils orientés texte (éditeur dans le cas le plus simple) pour y travailler. Dumping Hex signifie essentiellement que vous utilisez deux octets dans le journal pour représenter un octet de données (plus un peu de frais généraux). Heh, l'espace disque est bon marché de nos jours. P>
Si ces tampons binaires ont une structure assez cohérente, vous pouvez même sortir et étiqueter des champs (ou quelque chose comme ça) afin que vos données deviennent un peu plus humaines lisibles et, plus important encore, mieux consultables. Bien sûr, c'est à vous de décider combien d'effort vous voulez sombrer pour rendre vos archives de journal sont jolies; Mais le temps passé ici peut bien payer un peu plus tard dans l'analyse. P>
Nous utilisons la méthode ShortDebUNString () Code> sur l'objet C ++ pour écrire une version lisible par l'homme de tous les messages entrants et sortants à un fichier texte.
ShortDebugstring () Code> Renvoie une version à une ligne de la même chaîne renvoyée par la méthode Tostring () en Java. Je ne sais pas à quel point il est facile d'accomplir la même chose en Java. P>
TL; DR: Écrire des journaux de débogage dans le texte, écrivez des journaux à long terme en binaires. p>
Il y a au moins deux façons que vous puissiez faire cette journalisation (et peut-être, en fait, vous devriez em> faire les deux): p>
Honnêtement, c'est plus ou moins la façon dont cela se fait à la place de cette technologie. p>
"Honnêtement, c'est plus ou moins la façon dont cela se fait à la place de cette technologie." - Les tampons de protocole sont venus de Google. Voulez-vous dire que vous savez que Google utilise des tampons de protocole pour une exploitation forestière structurée? Avez-vous plus d'informations à ce sujet?
Si vous avez des chaînes de caractères non ASCII dans vos messages, il vous suffit de les enregistrer en utilisant un appel implicite ou explicite vers Si vous souhaitez conserver les caractères non-ASCII, utilisez voir Cette réponse Pour plus de détails. P> Tostring code> échapperait aux caractères. P>
"오늘 무슨 요일요일 입니까?" code> devient
"\ 354 \ 230 \ 244 \ 354 \ 235 \ 230 \ 353 \ 254 \ 264 \ 354 \ 212 \ 250 \ 354 \ 232 \ 224 \ 354 \ 236 \ 205 \ 354 \ 236 \ 210 \ 352 \ 271 \ 210 \ 352 \ 271 \ 214? " Code> p>
textformat.printer (). Escapingnonascii (false) .PrinTostring (message) code>. P>.