سؤال

لدي مشكلة في مشروع أحاول تقديمه باستخدام جرة واحدة التعبئة لتبسيط عملية النشر.
بدون التعبئة والتغليف، كل شيء يعمل بشكل جيد ويتم تحميل تكوين التسجيل بشكل مثالي، ولكن داخل العبوة، يتم تطبيق جزء فقط من التكوين.

لذلك، هنا هو تسجيل .properties أستخدمه:

handlers= java.util.logging.ConsoleHandler, java.util.logging.FileHandler
.level= INFO
java.util.logging.FileHandler.pattern = C:\\MyPath\\logging.csv
java.util.logging.FileHandler.limit = 50000
java.util.logging.FileHandler.count = 1
java.util.logging.FileHandler.formatter = my.package.logging.Formatter
java.util.logging.ConsoleHandler.level = INFO
java.util.logging.ConsoleHandler.formatter = my.package.logging.Formatter

وفي صفي الرئيسي، ها هي الطريقة التي أحملها:

public class MainClass {
  public static void main(final String[] args) {
    try {
      LogManager.getLogManager().readConfiguration(
        new MainClass().getClass().getResourceAsStream("logging.properties"));
      // main process goes here.
    } catch(Exception e) {
      // Exception handling
    }
  }
}

مستوى السجل وكذلك نمط ملف filehandler مفهوما جيدا لأن التسجيل ينتهي في الملف الصحيح، ولكن كإخراج صف XML، مما يجعلني أعتقد أنه لا يتم تحميل الهياكل لأنه يخرج عادة تنسيق CSV.

هل يمكن أن تكون مرتبطة بمسألة ClassPath؟ هل يعرف أحد كيفية التعامل مع هذا؟

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

المحلول

يستخدم LogManager.getLogManager().readConfiguration(LogManager.class.getResourceAsStream("/logging.debug.properties"));

(لاحظ الخط المائل الإضافي).

نصائح أخرى

يمكن أن يكون في jars لديك أكثر من ملف تسجيل واحد. بروبيرتيز، مع إعدادات مشابهة ولكن مختلفة قليلا. عندما تجمع بينها مع جرة واحدة تتغير الطلب ويحصل أحد منهم. قم بعمل "JAR -TF * .JAR | GREP ROVING.Properties" ومعرفة ما تراه.

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

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