当前位置: 首页 > 知识库问答 >
问题:

如何在像Tomcat这样的Servlet容器中使用JEE版本时禁用Restlet访问日志?

邵旺
2023-03-14

Restlet framework文档吹捧它能够通过它的服务器类并使用jse库构建独立运行,或者使用jee库构建在Servlet容器如Tomcat中运行。

该库生成了两种日志记录,与代码相关的日志记录用于调试,与错误和访问相关的日志记录,如下所示:

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构建的独立模式下很有帮助,其中引擎#setloglevel(...)存在。我发现,当在Tomcat容器中使用-jse构建时,这种Apache httpd日志记录会产生额外的干扰,在Tomcat容器中,我已经有了一个单独的访问日志。不幸的是,JEE构建中不存在引擎#setloglevel。

使用简单的Apache Tomcat Restlet JEE示例代码,禁用Restlet访问日志的理想位置在哪里?

共有1个答案

劳嘉实
2023-03-14

测试了不同的内容之后,使用logger.getlogger(“org.Restlet”).setlevel(level.warning)是唯一可靠地禁止Restlet访问日志消息的方法。我尝试了org.restlet.engine、org.restlet.engine.og和org.resetlet.engine.log.logfilter以及各种组件访问方法,但都没有抑制消息。我不确定我是否压制得比我真正想要的多。似乎如果引擎#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;
    }

}
 类似资料:
  • 问题内容: 我只是想在我的项目中禁用Restlet的日志到stdout / stderr,并通过org.restlet.ext.slf4j提供的SLF4J门面转发所有Restlet日志。是否有捷径可寻? 问题答案: 首先,您必须配置SLF4J来拦截Restlet对java.util.logging API的所有调用,并将它们映射到SLF4J Facade的API上的调用。您只需将jul-to- s

  • 在Tomcat管理器Web界面中,servlet中指定的数据有不同的列。例如,“显示名称”列填充了

  • 问题内容: 我在Docker中使用Ubuntu容器运行Gentoo主机。他们通过Docker自动创建的网桥进行通信。我想丢弃可能来自容器的192.168.0.0/16的所有流量。 如果需要提供其他信息,请告诉我 问题答案: 一种选择是使用docker运行,以防止任何容器与其他容器通信,然后您可以通过将容器与链接来使它们彼此通信。但是,这此时不会阻止容器与主机进行通信。 您也可以按照以下规则使用ip

  • 我在主机上运行Ubuntu18.04,在LXC容器中运行Ubuntu20.04。我的目标是在一个LXC容器中运行ROS2(需要Ubuntu 20.04),然后用它连接两个dynamixel伺服电机和一个USB Logitech网络摄像头。我还在容器中安装了miniconda,以便安装OpenCV和dlib。我还在容器内使用conda虚拟环境。 所有提到的软件工作正常。现在我需要用OpenCV访问网

  • 我在Eclipse中创建了一个名为TestWeb的新动态web项目。我添加了一个索引。将html添加到WebContent文件夹,并创建了一个web servlet,使servlet在/Test中可用。 我可以访问索引。html文件位于http://localhost:8080/TestWeb但是,我无法访问位于的servlethttp://localhost:8080/TestWeb/Test.

  • 因此,我目前正在尝试测试一个项目,它的方面我已经改变了,即我添加了一个动态web组件到它。为此,我决定创建一个基本的html表单,并将servlet与之关联。 错误消息: 编辑,现在工作的一个servlet也停止工作,抛出相同的错误。如果有帮助,我尝试从eclipse运行它,方法是右键单击html页面,然后选择在服务器上运行它。