سؤال

لذلك، ها هي مشكلتي:
لدي رسالة مدفوعة بالفول X وترغب في الاستفادة من مسجل الأسلوب OnMessage () x. يتيح للنفترض أن لدي مثيل واحد من الفول قيد التشغيل في خادم التطبيق الخاص بي، وبالتالي، أود تهيئة LOG4J في EJBCreate (). هذا يعني أنني سوف أفعل شيئا مثل هذا:

public void ejbCreate() {
    PropertyConfigurator.configure(Classloader.getResourceAsStream("xyz_log4j.properties"));
}

ومع ذلك، هذا لا يساعد. بغض النظر عن ما أقوم به دائما ما أحصل على دفقي ك NULL، جربت الإصدارات الأخرى: this.getclass (). GetStream () و ResultBundle.

أنا جرة خصائص بلدي ملف في اختبار. وأضفت أنه تحت مكتبات الأذن (أنا أستخدم RAD7) وانكسر في بيض بي.

هل يواجه أي شخص هذه المشكلة من قبل؟ إذا كانت الإجابة بنعم، كيف قمت بحلها؟ نقدر مساعدتكم...

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

المحلول

لن أوصي بتكوين LOG4J في طريقة إنشاء EJB. يمكن تنشيط / تم تنشيط Ejbeans متعددة في حاويات Whim لكل مواصفات J2EE. لذلك هناك احتمال ينتهي بك الأمر تكوين Log4J عدة مرات. يوصي باستخدام الفاصوليا بدء التشغيل والذي مضمون لاستدعاء وقت واحد فقط.

نصائح أخرى

إذا كنت تحصل على هذا من داخل ملف جرة، فأنت في عداد المفقودين /:

Classloader.getResourceAsStream("/xyz_log4j.properties")

واعتمادا على الدليل الذي يحتوي على ملف الخصائص، يجب عليك تحديد مسار لهذا الدليل بالنسبة إلى أعلى التسلسل الهرمي للفئة. على سبيل المثال، إذا كان ملف الخصائص هذا في نفس الدليل net.mine.Program, ، ثم سوف تفعل هذا:

Classloader.getResourceAsStream("/net/mine/xyz_log4j.properties")

لا أصدق أنه يمكنك القراءة من دليل التعريف باستخدام getResourceAsStream(), لكنني لم أحاول أبدا أن هناك طريقة للقيام بذلك.

يمكنك محاولة ترميز الثابت اسم الفصل في الحمل.

<name of your class>.class.getResourceAsStream(fileName);

بدلا من ذلك قد ترغب في النظر في SLF4J.. وبعد وهو الواجهة التي يمكن أن تجلس على رأس LOG4J. API هو في الغالب نفس الشيء (نفس الخالق الذي أؤمن)، ولا يتطلب SLF4J مكالمة تهيئة شرح، والتي تبسط الأشياء قليلا.

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