强制Tomcat通过SLF4J / Logback登录

因此,您将JAR可执行Web应用程序与Tomcat捆绑在一起 (请务必先阅读其中一个)。 但是,开头有这些烦人的Tomcat日志,与我们的应用程序日志无关,并且不可自定义:

Nov 24, 2012 11:44:02 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-bio-8080"]
Nov 24, 2012 11:44:02 PM org.apache.catalina.core.StandardService startInternal
INFO: Starting service Tomcat
Nov 24, 2012 11:44:02 PM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.30
Nov 24, 2012 11:44:05 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-8080"]

我真的很想让他们失望,或者甚至最好将它们保存在某个地方,因为它们有时会显示出重大的失败。 但是我绝对不想有单独的java.util.logging配置。 在阅读了上一篇文章之后,您是否想知道我如何知道可运行的Tomcat JAR支持httpPort参数和其他几个参数? 好吧,我检查了资源,但只寻求帮助就更简单了:

$ java -jar target/standalone.jar -help
usage: java -jar [path to your exec war jar]
-ajpPort <ajpPort> ajp port to use
-clientAuth enable client authentication for
https
-D <arg> key=value
-extractDirectory <extractDirectory> path to extract war content,
default value: .extract
-h,--help help
-httpPort <httpPort> http port to use
-httpProtocol <httpProtocol> http protocol to use: HTTP/1.1 or
org.apache.coyote.http11.Http11Nio
Protocol
-httpsPort <httpsPort> https port to use
-keyAlias <keyAlias> alias from keystore for ssl
-loggerName <loggerName> logger to use: slf4j to use slf4j
bridge on top of jul
-obfuscate <password> obfuscate the password and exit
-resetExtract clean previous extract directory
-serverXmlPath <serverXmlPath> server.xml to use, optional
-uriEncoding <uriEncoding> connector uriEncoding default
ISO-8859-1
-X,--debug debug

-loggerName参数看起来很有希望。 第一次尝试:

$ java -jar target/standalone.jar -loggerName slf4j
WARNING: issue configuring slf4j jul bridge, skip it

不好。 再次快速查看源代码,结果发现缺少SLF4J库。 由于此参数是在Tomcat引导期间(在部署Web应用程序之前)解释的, slf4j-api.jar我的Web应用程序内的slf4j-api.jar不够,它必须可用于根类加载器(等效于打包的Tomcat中的/ lib目录)。 幸运的是,插件公开了<extraDependencies />配置参数

<configuration>
    <path>/standalone</path>
    <enableNaming>false</enableNaming>
    <finalName>standalone.jar</finalName>
    <charset>utf-8</charset>
    <extraDependencies>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.2</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>jul-to-slf4j</artifactId>
            <version>1.7.2</version>
        </dependency>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.0.7</version>
        </dependency>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-core</artifactId>
            <version>1.0.7</version>
        </dependency>
    </extraDependencies>
</configuration>

运行Tomcat并成功!

00:01:27.110 [main] INFO o.a.coyote.http11.Http11Protocol - Initializing ProtocolHandler ["http-bio-8080"]
00:01:27.127 [main] INFO o.a.catalina.core.StandardService - Starting service Tomcat
00:01:27.128 [main] INFO o.a.catalina.core.StandardEngine - Starting Servlet Engine: Apache Tomcat/7.0.33
00:01:29.645 [main] INFO o.a.coyote.http11.Http11Protocol - Starting ProtocolHandler ["http-bio-8080"]

好吧,不完全是。 如果您每天使用Logback ,则您会熟悉默认的控制台日志记录模式。 我们没有选择任何logback.xml 。 根据我的经验,似乎将logback.xml外部放置在文件系统中的某个位置优于将其放置在二进制文件中,尤其是在启用自动刷新功能的情况下:

<configuration scan="true" scanPeriod="5 seconds">
<!-- ... -->
</configuration>

在未指定其他文件的情况下,将一些fallback logback.xml文件放在CLASSPATH的根目录中,如下所示:

$ java -jar standalone.jar -httpPort=8081 -loggerName=slf4j \
-Dlogback.configurationFile=/etc/foo/logback.xml

最后,干净且一致的日志记录,最有可能记录到单个文件。

参考: 迫使TomcatJava和社区博客上的JCG合作伙伴 Tomasz Nurkiewicz 通过SLF4J / Logback登录

翻译自: https://www.javacodegeeks.com/2012/11/forcing-tomcat-to-log-through-slf4jlogback.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值