سؤال

أحاول تحميل مخصص log.properties الملف عند بدء تطبيقي.

يوجد ملف الخصائص الخاص بي في نفس الحزمة الموجودة في صفي الرئيسي، لذلك افترضت أن ملف -Djava.util.logging.config.file=log.properties يجب أن تقوم معلمة سطر الأوامر بتحميل ملف الخصائص.

ولكن يتم تحميل الخصائص فقط عندما أقوم بتحديد مسار مطلق كامل لملف الخصائص.هل هناك أي اقتراحات حول كيفية استخدام المسار النسبي؟

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

المحلول

وتسجيل Java لا يتم البحث القرص الثابت بأكمله عن ملف. هناك قواعد بسيطة جدا كيف بدا ملفات يصل. تريد جافا لنرى أن الملفين تنتمي لبعضها البعض ولكنك لم يقل ذلك في أي مكان. منذ جافا لا يرى علاقة بين ملف الممتلكات وصفك غير أنهم في نفس المجلد على القرص، فإنه لا يمكن العثور على الملف.

و-Djava.util.logging.config.file=log.properties يعمل فقط إذا كان log.properties ملف في الدليل الحالي لعملية جافا (والتي يمكن أن تكون عشوائية إلى حد ما). لذلك يجب عليك استخدام مسار مطلق هنا.

وحل بديل سيكون لتحريك logging.properties الملف إلى $JAVA_HOME/lib/ (أو تحرير الملف الذي يجب أن يكون هناك). في هذه الحالة، لا تحتاج إلى تعيين خاصية النظام.

نصائح أخرى

ويمكنك تحميل الملفات ديناميكيا خصائص java.util.logging من مسار نسبي بسهولة جدا. هذا ما وضعت داخل كتلة static {} في صفي Main. وضع ملف logging.properties الخاصة بك في default package ويمكنك الوصول إليه بسهولة جدا مع التعليمات البرمجية التالية.

final InputStream inputStream = Main.class.getResourceAsStream("/logging.properties");
try
{
    LogManager.getLogManager().readConfiguration(inputStream);
}
catch (final IOException e)
{
    Logger.getAnonymousLogger().severe("Could not load default logging.properties file");
    Logger.getAnonymousLogger().severe(e.getMessage());
}

لا يتم تحميل تسجيل util من classpath، فهو يحتاج إلى مسار مطلق ولهذا السبب تكون حزم التسجيل الأخرى مثل log4j أسهل بكثير في التهيئة وأفضل لتطبيقات الويب حيث يصعب الحصول على مسارات abs.

لم يتم شرح هذا على الإطلاق في java.util.logging.LogManager doco.

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