[英]How to disable Restlet access logging when using JEE version in Servlet Container like Tomcat?
Restlet框架文档吹捧它可以通过Server类并使用jse库构建独立运行,或者使用jee库构建在Tomcat之类的Servlet容器中运行。
该库有助于生成两种类型的日志记录 ,即与代码相关的调试和错误日志记录,以及与访问相关的日志记录,如下所示:
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 -
这在具有Engine#setLogLevel(...)的-jse构建的独立模式下很有用。 当我在已经有单独访问日志的Tomcat容器内使用-jse构建时,发现这种类似于日志的Apache httpd会带来额外的噪音。 不幸的是,JEE构建中不存在Engine#setLogLevel。
使用简单的Apache Tomcat Restlet JEE示例代码 ,禁用Restlet访问日志的理想位置在哪里?
在测试了不同的东西之后,使用Logger.getLogger(“ org.restlet”)。setLevel(Level.WARNING)是唯一可靠地禁止Restlet访问日志消息的东西。 我尝试了org.restlet.engine,org.restlet.engine.og和org.resetlet.engine.log.LogFilter以及各种组件访问方法,但都没有抑制消息。 我不确定我是否会抑制自己的力量。 看来,如果JEE中没有Engine#setLevel,则应在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;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.