網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
一、通用的寫(xiě)法
log4j.properties
# 設(shè)置root logger等級(jí)為ALL,且appender有A1和FILE
log4j.rootLogger=ALL, A1,A3
#設(shè)置com.example.test logger
log4j.logger.com.example.test=DEBUG,A1,A3
# 取消繼承父類(lèi)
log4j.additivity.com.example.test=false
# 設(shè)置個(gè)控制臺(tái)輸出源,該appender名叫:A1
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
#設(shè)置個(gè)文件輸出源,該appender名叫:FILE
log4j.appender.FILE=org.apache.log4j.FileAppender
log4j.appender.FILE.file=D:/logs/log4j.log
log4j.appender.FILE.append=true
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
#設(shè)置個(gè)文件輸出源(滾動(dòng)文件輸出源,按照文件大小重新生成臨時(shí)文件),該appender名叫:A2
log4j.appender.A2=org.apache.log4j.RollingFileAppender
log4j.appender.A2.file=D:/logs/log4j.log
log4j.appender.A2.append=true
#maxFileSize 文件最大大小,超過(guò)會(huì)將舊的數(shù)據(jù)放在臨時(shí)文件,新的日志繼續(xù)打印在file指定的文件名中
log4j.appender.A2.maxFileSize=1
#maxBackupIndex 文件最大備份數(shù),默認(rèn)為1
log4j.appender.A2.maxBackupIndex=10
log4j.appender.A2.layout=org.apache.log4j.PatternLayout
log4j.appender.A2.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
#設(shè)置個(gè)文件輸出源(滾動(dòng)文件輸出源,按照日期重新生成臨時(shí)文件),默認(rèn)按照天分割日志,該appender名叫:A3
log4j.appender.A3=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A3.file=D:/logs/log4j.log
log4j.appender.A3.layout=org.apache.log4j.PatternLayout
log4j.appender.A3.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
測(cè)試代碼
package com.example.test;
import java.io.PrintWriter;
import org.apache.log4j.BasicConfigurator;
import org.apache.log4j.ConsoleAppender;
import org.apache.log4j.Layout;
import org.apache.log4j.Logger;
import org.apache.log4j.PatternLayout;
import org.apache.log4j.SimpleLayout;
import org.apache.log4j.spi.LoggingEvent;
import org.junit.Test;
public class TestLog4j {
private static final Logger logger = Logger.getLogger(TestLog4j.class);
@Test
public void testLog4j() {
// 日志級(jí)別
logger.fatal("fatal"); // 嚴(yán)重錯(cuò)誤,一般會(huì)造成系統(tǒng)崩潰 和終止運(yùn)行
logger.error("error"); // 錯(cuò)誤信息,但不會(huì)影響系統(tǒng)運(yùn)行
logger.warn("warn"); // 警告信息,可能會(huì)發(fā)生問(wèn)題
logger.info("info"); // 程序運(yùn)行信息,數(shù)據(jù)庫(kù)的連接、網(wǎng) 絡(luò)、IO操作等
logger.debug("debug"); // 調(diào)試信息,一般在開(kāi)發(fā)階段使 用,記錄程序的變量、參數(shù)等
logger.trace("trace"); // 追蹤信息,記錄程序的所有流程 信息
}
}
測(cè)試結(jié)果

二、Log4j如何屏蔽某個(gè)類(lèi)的日志打印
Log4j屏蔽某個(gè)類(lèi)的日志打印
項(xiàng)目中使用的是log4j.properties的方式配置,在項(xiàng)目啟動(dòng)后有一個(gè)任務(wù)每隔半小時(shí)會(huì)運(yùn)行,查不到數(shù)據(jù)的時(shí)候會(huì)打印warn級(jí)別的日志,由于數(shù)量太多想屏蔽該類(lèi)日志的打印。
網(wǎng)上查找了方法,可以通過(guò)設(shè)置log4j.logger.xxx=ERROR(xxx代表需要屏蔽的類(lèi),ERROR代表該類(lèi)只打印error及以上級(jí)別的日志,如log4j.logger.java.sql.Connection=ERROR)來(lái)屏蔽。
于是在項(xiàng)目中設(shè)置log4j.logger.org.search.DataSearch=ERROR后重啟項(xiàng)目卻發(fā)現(xiàn)不起作用,后來(lái)經(jīng)過(guò)測(cè)試,發(fā)現(xiàn)xxx設(shè)置成包名log4j.logger.org.search=ERROR就成功了。
注:
log4j默認(rèn)日志級(jí)別all<trace<debug<info<warn<error<fatal<off
Log4j屏蔽指定日志
log4j.logger.org.springframework=OFF log4j.logger.org.apache.struts2=OFF log4j.logger.com.opensymphony.xwork2=OFF log4j.logger.com.ibatis=OFF log4j.logger.org.hibernate=OFF |
注:
log4j.logger.xxx=error
xxx:表示要屏蔽的類(lèi)
三、Logger.getLogger(字符串)用法
log4j中的Logger.getLogger()可以不用加載一個(gè)類(lèi),也可以傳字符串的,這是一種通用做法,比如
Logger logger = Logger.getLogger("com.MyLog");
logger.info("...");
那么Logger首先會(huì)去找log4j.properties中的log4j.category.com.MyLog對(duì)應(yīng)的Appender來(lái)寫(xiě)日志,當(dāng)然如果你配置了rootAppender的話不用配其他的Appender也沒(méi)關(guān)系。
原文鏈接:https://gaodengwen.blog.csdn.net/article/details/128735915
- 上一篇:沒(méi)有了
- 下一篇:沒(méi)有了
相關(guān)推薦
- 2022-08-18 kubernetes?k8s常用問(wèn)題排查方法_云其它
- 2023-05-30 python中pip無(wú)法正確安裝或路徑出錯(cuò)的解決方案_python
- 2022-03-19 Docker?link實(shí)現(xiàn)容器互聯(lián)的方式_docker
- 2022-12-06 python中讀取txt文件時(shí)split()函數(shù)的妙用_python
- 2022-08-23 自學(xué)python求已知DNA模板的互補(bǔ)DNA序列_python
- 2022-06-01 Android調(diào)用外置攝像頭的方法_Android
- 2022-10-05 Android模仿Toast實(shí)現(xiàn)提示框效果_Android
- 2022-08-07 pandas中pd.groupby()的用法詳解_python
- 欄目分類(lèi)
-
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過(guò)濾器
- Spring Security概述快速入門(mén)
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支