سؤال

وأنا تنفيذ خادم سجل في C ++؛ أن يقبل تسجيل الرسائل من برنامج جافا (عبر مقبس log4j appender). كيف قرأت هذه الكائنات تسجيل جافا في C ++؟

هل كانت مفيدة؟

المحلول

ويجب تكوين appender log4j لإرسال رسائل بتنسيق XML. ثم هو مجرد مسألة قراءة XML في C ++.

نصائح أخرى

وتسلسل كائنات جافا هو تيار بايت التي تحتاج إلى المعلومات الوصفية من وقت التشغيل جافا لتكون قادرة على إعادة بناء الأجسام جافا. دون أن المعلومات الوصفية المتوفرة في النظام يجب إضافة هذه المعلومات لنفسك، وهو مملة وعرضة للخطأ. I الثانية فكرة إرسال XML بدلا من ذلك - وهذا هو ما اخترع XML التسلسل ل:)

وهناك طريقة أخرى سريعة للغاية من التسلسل الملحد-اللغة protobuf . يتم تجميع ملفات بروتو (الفوقية الملفات التي تصف هياكل البيانات الخاصة بك) باستخدام protoc الذي يكتب IO رمز لمختلف اللغات المستهدفة.

وأنا استخدامه في تطبيقي وفعل بعض تقارن أداءها حيث قد تعطيك فكرة إذا كان ذلك يخدم الغرض الخاص. الجانب السلبي الوحيد أنا على علم أن protobuf لا يعالج مراجع على الإطلاق. إذا كان أحد الأشياء الخاصة بك تحتوي على نفس الكائن مرتين وسوف تكون مكتوبة مرتين بدلا من مرة واحدة فقط مع إشارة إلى المثال السابق (كما هو الحال مع جافا التسلسل).

وبخصوص سؤالك الأصلي، وأنا أتفق مع ثوربيورن أن القراءة والكتابة من كائنات Java المتسلسلة سيكون من الصعب للغاية وعرضة للخطأ.

إذا كنت تنظر تسير في الاتجاه protobuf، لا تتردد في استخدام <لأ href = "http://sourceforge.net/apps/trac/lilith/browser/trunk/lilith-data/logging-protobuf/src/main/ protobuf / LoggingProto.proto "يختلط =" نوفولو noreferrer "> هذا الحدث تسجيل protobuf ملف كمطلقة.

وسلمان هو أفضل وسيلة للذهاب لهذا النوع من المشاكل.

وLog4cxx هو منفذ Log4j إلى C ++، ربما يمكنك استخلاص بعض الأفكار من ذلك أو حتى استخدامها مباشرة؟

وJSON! JSON! JSON! JSON!

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top