使用自定义logging.properties与泽西

时间:2017-03-03 05:01:35

标签: java tomcat logging jersey

我正在使用Jersey和Tomcat作为容器编写一个RESTful Web应用程序。我正在使用Java日志API(Jersey和Tomcat都使用它)从我的应用程序生成日志。但是显示由Jersey和Tomcat生成的日志的控制台记录器仅显示从我的应用程序到INFO级别的日志。我在logging.properties文件夹中放置了一个ConsoleHandler.level=ALL的自定义WebContent/META-INF/classes文件。但是我的应用程序仍然没有显示任何CONFIG或FINE级别的日志记录。

如何找出哪个logging.properties文件生效?在jre / lib或tomcat / conf或其他地方的那个?更重要的是,如何让我的应用使用自定义logging.properties

2 个答案:

答案 0 :(得分:0)

这就是我在Eclipse中运行Tomcat的方法:

  1. 找出在Eclipse中运行的tomcat的路径:Where can I view Tomcat log files in Eclipse?

  2. 在那里创建一个logging.properties文件。就我而言,路径为.../EclipseWorkSpace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/conf (您可以从实际的tomcat conf文件夹中复制此日志记录文件。)

  3. 在您的应用程序中,在logging.properties中创建一个src/main/resources文件。 (当我在tomcat文档中提到的WEB-INF/classes中直接创建时没有工作:

  4.   

    servlet-examples Web应用程序的logging.properties示例   放在Web应用程序内的WEB-INF / classes中:   来自https://tomcat.apache.org/tomcat-9.0-doc/logging.html   )

    1. 在上面的文件中设置tomcat日志记录参数,从您应用内部覆盖logging.properties的默认/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/conf文件:

      handlers= java.util.logging.ConsoleHandler
      
      .level= FINE
      
      java.util.logging.ConsoleHandler.level = FINE
      java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
      
    2. 这将记录来自Tomcat的“精细”级别日志。

      1. 在您的球衣应用中设置日志属性:

        register(new LoggingFeature(Logger.getLogger(MyApplication.class.getName()), Level.INFO, LoggingFeature.Verbosity.PAYLOAD_TEXT, 2048));
        

        这只会记录泽西的“INFO”日志。

      2. 因此,4和5实际上意味着Tomcat会记录所有FINE日志,但Jersey只会记录INFO日志,因此在您的日志文件(catalina.out)中,您只会看到来自Jersey的INFO日志,但是来自FINE日志来自Tomcat中的其他一切。

答案 1 :(得分:0)

它们以Java Util Logging的方式工作,它不会自动在类路径中找到logging.properties。您需要设置java.util.logging.config.file系统属性。

例如,说这是您的自定义logging.properties

# Handler details
handlers=java.util.logging.ConsoleHandler
java.util.logging.ConsoleHandler.level=ALL
java.util.logging.SimpleFormatter.format=%4$-7s [%3$s] %5$s%6$s%n

# Log level details
.level=ALL

将文件放置在类路径的根目录中,例如src/main/resources(如果您使用的是Maven)。根据部署应用程序的方式,将系统属性java.util.logging.config.file设置为logging.properties。例如,如果要使用tomcat7-maven-plugin进行部署:

mvn tomcat7:deploy -Djava.util.logging.config.file=logging.properties

您将看到一切:

Jan 03, 2019 12:09:05 AM org.apache.catalina.startup.HostConfig deployWAR
INFO: Deploying web application archive /usr/local/tomcat/webapps/Example.war
Jan 03, 2019 12:09:05 AM org.apache.tomcat.util.scan.StandardJarScanner scan
FINER: Scanning WEB-INF/lib for JARs
Jan 03, 2019 12:09:05 AM org.apache.tomcat.util.scan.StandardJarScanner scan
FINE: Scanning JAR [/WEB-INF/lib/jersey-common-2.27.jar] from WEB-INF/lib
Jan 03, 2019 12:09:05 AM org.apache.tomcat.util.scan.StandardJarScanner process
FINER: Scanning JAR at URL [file:/usr/local/tomcat/webapps/Example/WEB-INF/lib/jersey-common-2.27.jar]
Jan 03, 2019 12:09:05 AM org.apache.tomcat.util.scan.StandardJarScanner scan
...