強制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

最后,干凈且一致的日志記錄,最有可能記錄到單個文件。

參考: 迫使Tomcat從Java和社區博客上的JCG合作伙伴 Tomasz Nurkiewicz 通過SLF4J / Logback登錄 。

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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/370303.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/370303.shtml
英文地址,請注明出處:http://en.pswp.cn/news/370303.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

matlab拼碎紙片過程,碎紙片拼接復原模型

1. 引言破碎文件的拼接在司法物證復原、歷史文獻修復以及軍事情報獲取等領域都有著重要的應用。企事業、機關、院校和軍隊基于保密的需要&#xff0c;使用碎紙機對重要文件&#xff0c;單據以及材料進行銷毀。一些重要的文件隨著時間流逝&#xff0c;殘破不全&#xff0c;因此&…

python實現貝葉斯分類器_python實現簡單的樸素貝葉斯分類器

本文使用的測試問題是“皮馬印第安人糖尿病問題”這個問題包括768個對于皮馬印第安患者的醫療觀測細節&#xff0c;記錄所描述的瞬時測量取自患者的年齡&#xff0c;懷孕和血液檢查的次數。所有患者都是21歲以上的女性&#xff0c;所有屬性都是數值型&#xff0c;而且屬性的單位…

VC++編譯MPIR 2.7.0

目錄 第1章編譯 2 1.1 簡介 2 1.2 下載 3 1.3 解決方案 4 1.4 創建項目 5 1.5 復制文件樹 6 1.6 不使用預編譯頭文件 8 1.7 包含目錄 9 1.8 定義宏 10 1.9 編譯前事件 11 1.10 修改 obj 的位置 13 1.11 編譯yasm 14 1.12 編譯匯編代碼 …

PHP大數據處理【轉】

1&#xff1a;硬件方面 普通的一個p4的服務器每天最多能支持大約10萬左右的IP&#xff0c;如果訪問量超過10W那么需要專用的服務器才能解決&#xff0c;如果硬件不給力 軟件怎么優化都是于事無補的。主要影響服務器的速度 有&#xff1a;網絡-硬盤讀寫速度-內存大小-cpu處理速度…

http1.X與2.0

HTTP HTTP 1.X HTTP是建立在TCP協議上的&#xff0c;HTTP協議的瓶頸及優化都是基于TCP協議本身的特性。TCP建立連接時有三次握手 會有1.5RTT的延遲&#xff0c;為了避免每次請求都經歷握手待來的延遲&#xff0c;應用層會選擇不同策略的http長連接。 HTTP 1.0 連接不能復用以…

php代碼清除空格注解,去除php注釋和去除空格函數分享

雖然php5中已有php_strip_whitespace方法可以返回刪除注釋和空格后的PHP源碼的功能&#xff0c;為了學習&#xff0c;這里為大家提供一個自己的方法&#xff0c;也可以去除代碼中的空白和注釋&#xff0c;代碼如下&#xff1a;. 代碼如下:/*** 去除代碼中的空白和注釋* param s…

包裝的重要性

我記得大約15年前開始學習Java的時候。 我讀了很多有關“包裝”和“命名空間”的東西&#xff0c;但我完全不了解。 可悲的是&#xff1a;雖然包裝的某些方面幾乎為業內每個人所了解&#xff0c;但其他方面卻并非如此。 因此&#xff0c;讓我們看一下哪些軟件包最適合。 命名空…

我的python學習筆記全集_我的python學習筆記

(此文是在實際工程中遇到的一些小問題&#xff0c;給予解決和整理。解決方法大多來自網上零散的文章。)1——如下代碼&#xff0c;a[1,2,3]bab也是[1,2,3]了&#xff0c;接著a[0]4a[1]5a[2]6此時a變成[4,5,6]了&#xff0c;再看b&#xff0c;a變了之后沒有對b進行新的引用&…

課時28.假鏈接(掌握)

什么是假鏈接&#xff1f; 就是點擊之后不會跳轉的鏈接我們稱之為假鏈接。 假鏈接存在的意義&#xff1f; 在企業開發前期&#xff0c;其他界面都沒有寫出來&#xff0c;那么&#xff0c;我們就不知道應該跳轉到什么地方&#xff0c;所以就只能使用假鏈接來代替&#xff0c;…

筆記45 | 代碼性能優化建議[轉]

地址 筆記45 | 代碼性能優化建議[轉] 目錄 前言避免創建不必要的對象選擇Static而不是Virtual常量聲明為Static Final避免內部的Getters/Setters使用增強的For循環使用包級訪問而不是內部類的私有訪問避免使用float類型使用庫函數謹慎使用native函數關于性能的誤區前言 通常來說…

導彈攔截

鏈接 分析&#xff1a;經典DP題&#xff0c;最長不下降子序列的變種&#xff0c;同時需要記錄路徑&#xff0c;用pre[]數組記錄當前結點的前一個結點的方法很妙 1 #include "iostream"2 #include "cstdio"3 #include "cstring"4 #include "…

JUnit4參數化和理論示例

我始終依靠TestNG將參數傳遞給測試方法&#xff0c;以便為我的測試或套件提供一些靈活性。 但是&#xff0c;使用JUnit4可以實現相同的靈活性。 要使用它很簡單&#xff1a; package com.marco.test;import java.util.Arrays;import java.util.Collection;import junit.fram…

楊杰matlab神經網絡30例,MATLAB神經網絡30例

實例1 BP神經網絡在非線性函數擬合中的應用11.1 理論基礎11.1.1 BP網絡概述11.1.2 BP神經網絡的MATLAB函數21.2 非線性函數擬合方法6實例2 主元BP神經網絡在股票價格預測中的應用122.1 理論基礎122.1.1 主成分分析的原理122.1.2 主元神經網絡與股票預測142.2 股票價格的預測方法…

HTMLCSS 問題

1.子div使用浮動&#xff0c;父div高度自適應(個人感覺好用) 方法&#xff1a; css: <style> .clear{ clear:both} </style> html&#xff1a;在父div關閉之前添加<div class"clear"></div> 本文轉載于:猿2048?https://www.mk2048.com/…

python matplotlib數據可視化教程_matplotlib的Python數據可視化和探索——入門指南

matplotlib——最受歡迎的Python庫&#xff0c;用于數據可視化和探索我喜歡在Python中使用matplotlib。這是我學會掌握的第一個可視化庫&#xff0c;此后一直存在。matplotlib是最受歡迎的用于數據可視化和探索的Python庫&#xff0c;這是有原因的——它提供的靈活性和敏捷性是…

mysql 查詢所有子節點的相關數據

定義一個函數 CREATE DEFINERrootlocalhost FUNCTION getColumnChildLst(rootId INT) RETURNS varchar(1000) CHARSET utf8 BEGINDECLARE sTemp VARCHAR(1000);DECLARE sTempChd VARCHAR(1000);SET sTemp $;SET sTempChd cast(rootId as CHAR);WHILE sTempChd is not null DOS…

怎么用PHP實現年月日date,PHP date函數用法,php年月日寫法

日期和時間信息在 PHP 內部是以 64 位數字存儲的&#xff0c; 它可以覆蓋當前時間前后 2920 億年的時間&#xff0c;這個范圍之廣&#xff0c;足以滿足現有應用的實際需求。需要注意的是&#xff0c; 這些PHP時間函數都是依賴服務器的區域設置的&#xff0c; 所以在使用它們的時…

python氣象衛星云圖解析_【我教你系列】想要實時的地球圖像作為桌面?

Python 定時獲取衛星圖像做為桌面背景簡介這兩天看新聞的時候&#xff0c;突然發現最近有個臺風產生&#xff0c;并且在不斷的增強中。幸運的是從中央氣象臺預報的路徑來看&#xff0c;不會登陸我國。也正是通過這則新聞&#xff0c;我發現了一個不錯的衛星云圖網站。(ps:這篇文…

CSS權重的比較方法

CSS的權重如下&#xff1a; !important Infinity正無窮 行間樣式 1000 id 100 class|屬性|唯類 10 標簽|偽元素 1 通配符 0 256進制 當出現多個選擇器時 在同一行的選擇器權重相加即可 當兩個混合選擇器權重相同時優先選擇后面的選擇器 如&#xff1a; html <…

python_day8 面向對象常用 補充

__str__ 作用本來 打印 類對象是 打印的內存地址 但是在類中 增加 __str__ 參數 以后 再打印這個 類對象 就是顯示 __str__中的 return __del__作用 當 實例化的對象 在內存中 被釋放的時候執行 item操作通過 set get del 操作 item最終目的是將 類里面的 變量 像 字典一樣操作…