因此,您将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

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

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

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

强制Tomcat通过SLF4J / Logback登录相关推荐

  1. logback slf4j_强制Tomcat通过SLF4J / Logback登录

    logback slf4j 因此,您将JAR可执行Web应用程序与Tomcat捆绑在一起 (请务必先阅读其中一个). 但是,一开始就有这些烦人的Tomcat日志,它们独立于我们的应用程序日志且不可自定 ...

  2. Slf4j+logback的使用与配置以及详情介绍

    一.几种日志的区别 commons-logging apache最早提供的日志的门面接口.避免和具体的日志方案直接耦合.类似于JDBC 的api 接口,具体的的JDBC driver 实现由各数据库提 ...

  3. Java日志(slf4j+logback)及打印彩色日志

    一.maven依赖 在pom文件增加slf4j+logback依赖 <!-- 版本配置 --> <properties><slf4j.version>1.7.21& ...

  4. SLF4J 的几种实际应用模式--之二:SLF4J+Logback

    前面讲的 SLF4J 的用法之一是 SLF4J+Log4J,而这里要推出的组合是 SLF4J+LogBack.不用 Log4J?难道还有比 Log4J 更好的日志实现吗?是的,答案就是 LogBack ...

  5. logback:用slf4j+logback实现多功能日志解决方案

    slf4j是原来log4j的作者写的一个新的日志组件,意思是简单日志门面接口,可以跟其他日志组件配合使用,常用的配合是slf4j+logback,无论从功能上还是从性能上都较之log4j有了很大的提升 ...

  6. SpringBoot 项目使用 SLF4J+logback 进行日志记录,来增强可维护性

    点击上方 好好学java ,选择 星标 公众号重磅资讯,干货,第一时间送达 今日推荐:推荐19个github超牛逼项目!个人原创100W +访问量博客:点击前往,查看更多 作者:云深不知处 blog. ...

  7. java日志,需要知道的几件事(commons-logging,log4j,slf4j,logback)

    java日志,需要知道的几件事 如果对于commons-loging .log4j .slf4j .LogBack 等都已经非常清楚了,可以忽略本文.几次解决日志冲突问题时对这几个概念的简单总结,希望 ...

  8. 【java-日志组件】slf4j+logback配置及详解

    文本主要介绍一下slf4j+logback在java工程中的配置,面向的读者是已经对slf4j+logback有一定了解的同学,不了解的同学,请看文章末尾的相关链接.以后会写一篇介绍slf4j框架的文 ...

  9. 乐鑫Esp32学习之旅14 esp32 sdk编程实现门户强制认证,连接esp32热点之后,自动强制弹出指定的登录html界面。(附带Demo)

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1. 爬坑学习新旅程,虚拟机搭建esp32开发环境,打印 " ...

最新文章

  1. JAVA面试解析(有赞二面)
  2. 【NetApp】FC盘不能和装有ATA盘的DS14盘柜接入同一个loop中。
  3. docker概念:用Dockerfile生成Image
  4. php 时间 (年,月,星期,天,小时,秒)的查找
  5. mysql事务,START TRANSACTION, COMMIT和ROLLBACK,SET AUTOCOMMIT语法
  6. Amcharts 柱状图和线形图
  7. python学习总结----时间模块 and 虚拟环境(了解)
  8. 【FPGA VerilogHDL】第一次尝试:LED灯基础实验
  9. thinkpad t460p恢复原厂系统以及设置的方式
  10. linux进程号函数,linux进程
  11. Python处理JSON
  12. 为什么Python没有属性赋值的“with”语句?
  13. Anroid开发中常用快捷键
  14. python 调用github的api,呈现python的受欢迎的程度
  15. php定位并且获取天气信息
  16. 【UWB 定位】室内定位 三边定位算法
  17. 《数据结构上机实验(C语言实现)》笔记(2 / 1)
  18. 电商企业如何利用CRM突出重围?
  19. 用 Python 实现词云可视化
  20. 操作系统简介及编程语言

热门文章

  1. java本地创建zk节点
  2. spring(6) 渲染web视图
  3. java泛型——桥方法
  4. 如何用for循环出数据库的数据
  5. cassandra使用心得_避免在Cassandra中使用清单
  6. 注解代替枚举_精选枚举代替开关
  7. gradle使用maven_使用Gradle – 2019版从Travis可靠发布到Maven Central
  8. jrebel gradle_JRebel适用于Gradle Spring Boot应用程序
  9. hashmap java_Java – HashMap详细说明
  10. python antlr_使用ANTLR在5分钟内用Java解析任何语言:例如Python