我正在使用以 Tomcat 作为容器的 Jersey 编写一个 RESTful 网络应用程序。我正在使用 Java 日志记录 API(Jersey 和 Tomcat 也使用它)从我的应用程序生成日志。但是显示 Jersey 和 Tomcat 生成的日志的控制台记录器只显示来 self 的应用程序的日志,直到 INFO 级别。我在 WebContent/META-INF/classes< 中放置了一个带有
文件夹。但它仍然没有显示来 self 的应用程序的任何 CONFIG 或 FINE 级别的日志记录。ConsoleHandler
和 .level=ALL
的自定义 logging.properties
文件
如何找出哪个 logging.properties
文件有效? jre/lib 或 tomcat/conf 或其他地方的那个?更重要的是,如何让我的应用程序使用自定义 logging.properties
?
最佳答案
这就是我如何让它在 Eclipse 中运行的 Tomcat 上运行:
找出在 Eclipse 中运行的 tomcat 的路径:Where can I view Tomcat log files in Eclipse?
在那里创建一个
logging.properties
文件。在我的例子中,路径是.../EclipseWorkSpace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/conf
(您可以从实际的 tomcat conf 文件夹中复制此日志记录文件。)在您的应用程序中,在
src/main/resources
中创建一个logging.properties
文件。 (当我直接在WEB-INF/classes
中创建时不起作用,如 tomcat 文档中所述:
Example logging.properties for the servlet-examples web application to be placed in WEB-INF/classes inside the web application: from https://tomcat.apache.org/tomcat-9.0-doc/logging.html )
在上述文件中设置您的 tomcat 日志记录参数,它会覆盖
/.metadata/.plugins/org.eclipse.wst.server 中的默认
从你的应用程序内部:logging.properties
文件。 core/tmp0/confhandlers= java.util.logging.ConsoleHandler .level= FINE java.util.logging.ConsoleHandler.level = FINE java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
这将从 Tomcat 记录“精细”级别的日志。
在您的 Jersey 应用中设置日志记录属性:
register(new LoggingFeature(Logger.getLogger(MyApplication.class.getName()), Level.INFO, LoggingFeature.Verbosity.PAYLOAD_TEXT, 2048));
这只会记录来自 Jersey 的“INFO”日志。
因此,4 和 5 实际上意味着 Tomcat 会记录所有 FINE 日志,但 Jersey 只会记录 INFO 日志,因此在您的日志文件 (catalina.out) 中,您只会看到来自 Jersey 的 INFO 日志,但来自 Jersey 的 FINE 日志Tomcat 中的所有其他内容。
关于java - 将自定义 logging.properties 与 Jersey 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42571025/