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

logback slf4j

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

logback slf4j

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/350581.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

APP测试点总结

1 功能测试 根据产品需求文档编写测试用例  软件设计文档编写测试用例2 兼容性测试 适配性测试手机不同分辨率支持&#xff0c;客户端支持的分辨率等  手机不同版本的支持  手机不同厂家系统的支持  手机不同尺寸的支持安装&#xff0c;卸载测试生成的apk文件在真机上可…

threshold()

一、threshold()函数 1.1 threshold()函数各参数详解 double threshold(InputArray src,OutputArray dst,double thresh,double maxval,int type) 第一个参数&#xff0c;InputArray类型的src&#xff0c;输入数组&#xff0c;填单通道 , 8或32位浮点类型的Mat即可。 第…

如何提升python编程能力_Python编程小白如何提升自己的编程能力

1.不使用分号 使用分号在Python中是可选的&#xff0c;对比其他面向对象语言&#xff0c;你不需要在每一条语句后面使用分号。 这看起来很简单&#xff0c;似乎也节省不了多少时间;但一旦你的代码量扩展到数千号&#xff0c;这些分号就变得分心且没有必要键入。 2.找一个称手的…

javascript时间戳和日期字符串相互转换代码

一、日期字符串转时间戳 // 获取当前时间戳(以s为单位)// 第一种方式var timestamps new Date();timestamps timestamps / 1000;// 第二种方式var timestamp Date.parse(new Date());timestamp timestamp / 1000;// 第三种方式var date new Date("2014-07-10 10:21:1…

如何使用Spring设置安全的REST API

众所周知&#xff0c; Spring Boot是一个工具包&#xff0c;可以快速轻松地开发功能强大的Web服务。 它非常模块化&#xff0c;可以与其他框架和工具很好地配合使用。 在本教程中&#xff0c;我将向您展示通过使用Speedment作为ORM对现有SQL数据库设置RESTful API多么容易。 背…

OpenCV imread()函数

imread&#xff08;const string& filename, int flags1&#xff09; 例如&#xff1a; //读入图像单通道&#xff0c;即灰度图 ScrImage imread("C:\\Users\\Desktop\\opencv_1.jpg", 0);imread函数从文件中加载图像并返回该图像。如果该图像不能被读取&#x…

layui横向时间线_炒股一生只买一种股票:股价K线形成这样后,必然有一波拉升...

在上升趋势中做多; 在下跌趋势中做空; 在震荡区间顶部做空、底部做多。大趋势像是遛狗的主人&#xff0c;他走的比较慢&#xff1b;狗就像中短期的走势&#xff0c;活蹦乱跳&#xff0c;有时候跑过头&#xff0c;又会回来找主人一下&#xff0c;然后再去东闻闻、西嗅嗅。最后你…

最小二乘

1.最小二乘的背景 这种东东的来源&#xff0c;比较容易找到而且比较靠谱的途径自然是wiki百科了&#xff0c;以下部分的内容来自wiki百科&#xff1a; 1801年&#xff0c;意大利天文学家朱赛普皮亚齐发现了第一颗小行星谷神星。经过40天的跟踪观测后&#xff0c;由于谷神星运…

团队冲刺计划第八天

1、 所有工作的预期时间&#xff1a;96h 目前已经花的时间:78h 还剩余的时间:18h 2、任务看板 3、冲刺会议照片&#xff1a; 4、燃尽图&#xff1a; 转载于:https://www.cnblogs.com/532BEST/p/10871189.html

[Linux]Linux下经常会用到的简单实例(持续更新)

1、查找某些进程并结束他们&#xff1a; ps -elf | grep 进程关键字 | awk {print $4}| xargs kill -9 解析&#xff1a; ps -elf 的 -e 代表列出所有进程&#xff0c;-l 代表长格式&#xff0c;-f 代表完整的格式 grep的工作方式是这样的&#xff0c;它在一个或多个文件中搜索…

elupload获取文件名与路径_Uipath获取文件名,路径,扩展名等操作

Uipath获取文件名&#xff0c;路径&#xff0c;扩展名等操作东京IT青年前线​www.rpatokyo.com使用Assign Activity&#xff0c;声明一个字符串变量为str获取文件路径代码System.IO.Path.GetDirectoryName(“C:UsersAdministratorDesktop备课二回目css基础.pptx”)运行&#xf…

servlet3.0新特性_查看Servlet 3.0的新增功能

servlet3.0新特性随着JEE6规范上市&#xff0c;在企业应用程序领域中如何开发应用程序方面发生了一些重大变化。 在本文中&#xff0c;我将介绍有关Web应用程序开发的一些更改。 首先&#xff0c;请告别web.xml部署描述符&#xff08;至少是其中的一部分&#xff09;。 好吧&am…

Android(2)-----Fragment //(第七周后的知识)

1、Fragmentandroid.app.Fragment版本&#xff1a;//v4版本是为了由3.0向下兼容到1.6&#xff0c;改那个Fragment文件里的import android.support.v4.app.Fragment;换成 import android.app.Fragment;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01…

延迟加载是一种代码气味

您见过那些具有许多属性的巨大物体吗&#xff1f; 这些域对象由于不希望从数据库检索太多信息而在其中使用延迟加载&#xff1f; 我敢打赌你有这种令人怀疑的快乐。 今天&#xff0c;我想与大家分享我对它们的印象- 使用延迟加载应该被视为一种代码味道&#xff01; 让我解释…

c#时间函数

我们可以通过使用DataTime这个类来获取当前的时间。通过调用类中的各种方法我们可以获取不同的时间&#xff1a;如&#xff1a;日期&#xff08;2008-09-04&#xff09;、时间&#xff08;12&#xff1a;12&#xff1a;12&#xff09;、日期时间&#xff08;2008-09-04 12&…

gbk编码在线转换工具_TOOLFK工具-在线汉字/字母/人民币/简繁体转换工具

本文要推荐的[TOOLFK]在线汉字/字母/人民币/简繁体转换工具,提供简繁体在线转换、人民币大写转换、字母大小写互转、汉字转拼音在线日常使用工具。網站名稱&#xff1a;ToolFk網站鏈結&#xff1a;https://www.toolfk.com/工具链接&#xff1a;https://www.toolfk.com/tool-onl…

hive的metatable学习

一、存储Hive版本的元数据表&#xff08;VERSION&#xff09; &#xfffc; &#xfffc; 二、Hive数据库相关的元数据表&#xff08;DBS、DATABASE_PARAMS&#xff09; DBS --存储Hive中所有数据库的基本信息 &#xfffc; &#xfffc; DATABASE_PARAMS --该表存储数据库的相…

clickhouse官方文档_clickhouse分析:结合grafana和metabase完成监控和数据分析

点击上方蓝字关注我们“ 关于clickhouse的监控和可视化界面&#xff0c;想必刚接触到ch的人是一头雾水&#xff0c;大厂往往会给ch集群定制各种监控和可视化分析&#xff0c;普通用户就需要我们自己寻求现成的开源工具&#xff0c;在一些常见的开源工具上&#xff0c;我们可以较…

hazelcast_带弹簧的Hazelcast分布式执行

hazelcastExecutorService功能是Java 5附带的&#xff0c;位于java.util.concurrent包中。 它扩展了Executor接口&#xff0c;并提供了线程池功能来执行异步简短任务。 建议使用Java Executor服务类型来查看基本的ExecutorService实现。 ThreadPoolExecutor也是ExecutorServic…

OpenCV测试程序

#include<opencv2\opencv.hpp> using namespace cv; int main() {Mat picture imread("1.jpg");//图片必须添加到工程目下//也就是和test.cpp文件放在一个文件夹下&#xff01;&#xff01;&#xff01;imshow("测试程序", picture);waitKey(201509…