Как отключить ведение журнала доступа Restlet при использовании версии JEE в контейнере сервлетов, например Tomcat? - PullRequest
0 голосов
/ 20 декабря 2018

В документации инфраструктуры Restlet говорится о ее способности запускать автономно через свой класс Server и использовать сборку библиотеки jse или запускать в контейнере сервлетов, таком как Tomcat, используя сборку библиотеки jee.

Библиотека с готовностью создает два типа записей журнала , связанные с кодом записи журнала для отладки и ошибок и доступа к связанным записям журнала, которые выглядят следующим образом:

20-Dec-2018 12:33:01.723 INFO [http-nio-8088-exec-52] org.restlet.engine.log.LogFilter.afterHandle 2018-12-20   12:33:01    0:0:0:0:0:0:0:1 -   0:0:0:0:0:0:0:1 8088    POST    /WebApp/route   -   204 0   647 11619   http://localhost:8088   PostmanRuntime/7.4.0    -

Это полезно в автономном режиме с -jse build, где существует Engine # setLogLevel (...).Я нахожу, что журналирование в стиле Apache httpd создает дополнительный шум при использовании сборки -jse внутри контейнера Tomcat, где у меня уже есть отдельный журнал доступа.К сожалению, Engine # setLogLevel не существует в сборке JEE.

Используя простой пример кода JEEE-апплета Apache Tomcat , где идеальное место для отключения журнала доступа к Restlet?

1 Ответ

0 голосов
/ 20 декабря 2018

После тестирования разных вещей, используя Logger.getLogger ("org.restlet"). SetLevel (Level.WARNING) было единственным, что надежно подавляло сообщения журнала доступа Restlet,Я пробовал org.restlet.engine, org.restlet.engine.og и org.resetlet.engine.log.LogFilter и различные методы доступа к компонентам, но ни одно из них не подавляло сообщение.Я не уверен, что я не подавляю больше, чем я действительно хотел.Похоже, что если Engine # setLevel недоступен в JEE, то протоколирование доступа должно быть по умолчанию подавлено в JEE.

package my.package.space;

import java.util.logging.Level;
import java.util.logging.Logger;
import org.restlet.Application;
import org.restlet.Restlet; // from org.restlet.jee artifact version 2.3.12
import org.restlet.routing.Router;

public class MyJeeApplication extends Application {

    /**
     * Creates a root Restlet that will receive all incoming calls.
     */
    @Override
    public synchronized Restlet createInboundRoot() {
        // Create a router Restlet that routes each call to a new instance of HelloWorldResource.
        Router router = new Router(getContext());
        // Set restlet log level to warning to suppress 
        // INFO org.restlet.engine.log.LogFilter.afterHandle access log messages
        Logger.getLogger("org.restlet").setLevel(Level.WARNING);
        // Defines only one route
        //router.attach("/hello", HelloWorldResource.class);
        router.attachDefault(HelloWorldResource.class);

        return router;
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...