Glassfish 3 + ухо + logback.xml - PullRequest
       32

Glassfish 3 + ухо + logback.xml

5 голосов
/ 29 декабря 2011

Я использую logback в EAR-файле, который содержит JAR (ejb) и WAR. Это должно работать на сервере Glassfish v3. Все работает, кроме загрузки logback.xml. Это не может быть найдено. Я строю проект с NetBeans. Используемые внешние библиотеки находятся в lib-Directory EAR (что не должно иметь значения, где они находятся ...). Я планировал поместить файл logback.xml в корневой каталог или другой подкаталог в EAR. Classpath устанавливается в Manifest-файлах JAR и WAR. Но по некоторым причинам logback.xml не был найден ... (Ухо сборки содержит logback.xml;))

Я перепробовал каждое местоположение logback.xml. Даже в WAR или JAR. Ничего не сработало ...

Если я использую автономную WAR, тогда все работает нормально, и logback.xml был найден. (ОК. Не все. Изменение пути к классам в манифесте не работает ...)

Итак, мой вопрос: кто-нибудь уже запустил logback.xml в EAR?

Вот мой манифест (надеюсь, это правильный синтаксис):

Manifest-Version: 1.0 
Ant-Version: Apache Ant 1.8.2 
Created-By: 1.7.0_147-icedtea-b147 (Oracle Corporation) 
Class-Path: ./ 

Надеюсь, кто-нибудь может мне помочь.

Привет

Ответы [ 2 ]

6 голосов
/ 25 января 2012

Я решил эту проблему, создав отдельный простой jar-файл, который я развернул в EAR (используя Maven и отдельный модуль config.jar).На практике logback.xml был вставлен в lib / config.jar / logback.xml

2 голосов
/ 12 февраля 2013

Я нашел решение, не ставя еще одну банку в путь к классам. 1) Просто поместите logback.xml в classpath приложения war (например, / src / java /); 2) Используйте ServletContextListener для загрузки файла с использованием getResourceAsStream и, в конце концов, установите некоторые параметры (например, имя приложения), как показано ниже:

@Override
    public void contextInitialized(ServletContextEvent sce) {
        System.out.println("Logback contextInitialized !!!!");
        LoggerContext context = (LoggerContext) LoggerFactory.getILoggerFactory(); 
        JoranConfigurator jc = new JoranConfigurator(); 
        jc.setContext(context); context.reset(); 
        // override default configuration 
        // inject the name of the current application as "application-name" 
        // property of the LoggerContext 
        context.putProperty("application-name", "menu_dinamico"); 
        try { 
            InputStream is = getClass().getClassLoader().getResourceAsStream("logback.xml");
            if(is == null) {
                System.out.println("Logback xml file non trovato");
            }
            else {
                jc.doConfigure(is);
            }
        } catch (JoranException ex) {
            System.out.println("Logback contextInitialized error");
            StatusPrinter.print(context);
            ex.printStackTrace();
        }
    }

Теперь распознан файл logback.xml.

...