1.Slf4j使用log4j的配置参数、配置sl4j/log4j输出到不同的文件、案例
1.Slf4j使用log4j的配置參數(shù)
轉(zhuǎn)自:https://blog.csdn.net/yx0628/article/details/83214387
slf4j,即簡(jiǎn)單日志門(mén)面(Simple Logging Facade for Java),不是具體的日志解決方案,它只服務(wù)于各種各樣的日志系統(tǒng)。按照官方的說(shuō)法,SLF4J是一個(gè)用于日志系統(tǒng)的簡(jiǎn)單Facade,允許最終用戶在部署其應(yīng)用時(shí)使用其所希望的日志系統(tǒng)。比如用戶可以自己選擇使用 log4j 或是 log4j2 。
1.1.Sl4J的maven配置如下:
<!--日志 start--> <dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>1.7.25</version> </dependency> <dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>1.7.25</version> </dependency>1.2.關(guān)于具體的配置 log4j.properties:
### 設(shè)置rootLogger ### log4j.rootLogger = info,stdout,D,E### 輸出信息到控制臺(tái) ### ### 控制臺(tái)輸出 log4j.appender.stdout = org.apache.log4j.ConsoleAppender ### 默認(rèn)是system.out,如果system.err是紅色提示 log4j.appender.stdout.Target = System.out ### 布局格式,可以靈活指定 log4j.appender.stdout.layout = org.apache.log4j.PatternLayout ### 消息格式化 log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n### 輸出INFO 級(jí)別以上的日志到=D://logs/error.log ### ### 以每天一個(gè)文件輸出日志 log4j.appender.D = org.apache.log4j.DailyRollingFileAppender ### 輸出文件目錄 log4j.appender.D.File = D://logs/log.log ### 消息增加到指定的文件中,false表示覆蓋指定文件內(nèi)容 log4j.appender.D.Append = true ### 輸出信息最低級(jí)別 log4j.appender.D.Threshold = INFO log4j.appender.D.layout = org.apache.log4j.PatternLayout log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n### 輸出ERROR 級(jí)別以上的日志到=D://logs/error.log ### log4j.appender.E = org.apache.log4j.DailyRollingFileAppender log4j.appender.E.File =D://logs/error.log log4j.appender.E.Append = true log4j.appender.E.Threshold = ERROR log4j.appender.E.layout = org.apache.log4j.PatternLayout log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n1.3.日志級(jí)別
主要有以下:
?ERROR錯(cuò)誤
?WARN警告
?INFO一般信息
?DEBUG調(diào)試信息
1.4.常用的輸出位置
?ConsoleAppender控制臺(tái)
?FileAppender文件
?DailyRollingFileAppender 每天產(chǎn)生一個(gè)日志文件
?RollingFileAppender 文件大小達(dá)到指定尺寸時(shí)產(chǎn)生一個(gè)新文件
?WriterAppeder 將日志信息以流格式發(fā)送到指定地方
1.5.格式化輸出
-X號(hào): X信息輸出時(shí)左對(duì)齊; %p: 輸出日志信息優(yōu)先級(jí),即DEBUG,INFO,WARN,ERROR,FATAL, %d: 輸出日志時(shí)間點(diǎn)的日期或時(shí)間,默認(rèn)格式為ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},輸出類(lèi)似:2002年10月18日 22:10:28,921 %r: 輸出自應(yīng)用啟動(dòng)到輸出該log信息耗費(fèi)的毫秒數(shù) %c: 輸出日志信息所屬的類(lèi)目,通常就是所在類(lèi)的全名 %t: 輸出產(chǎn)生該日志事件的線程名 %l: 輸出日志事件的發(fā)生位置,相當(dāng)于%C.%M(%F:%L)的組合,包括類(lèi)目名、發(fā)生的線程,以及在代碼中的行數(shù)。舉例:Testlog4.main (TestLog4.java:10) %x: 輸出和當(dāng)前線程相關(guān)聯(lián)的NDC(嵌套診斷環(huán)境),尤其用到像Java servlets這樣的多客戶多線程的應(yīng)用中。 %%: 輸出一個(gè)”%”字符 %F: 輸出日志消息產(chǎn)生時(shí)所在的文件名稱(chēng) %L: 輸出代碼中的行號(hào) %m: 輸出代碼中指定的消息,產(chǎn)生的日志具體信息有時(shí)我們看到 %-5p 或者 %5p 意思就是輸出日志級(jí)別時(shí),左對(duì)齊或右對(duì)齊,4個(gè)字母的 INFO / WARN 要補(bǔ)一個(gè)空格,才能和 DEBUG / ERROR對(duì)齊格式。1.6.配置sl4j/log4j輸出到不同的文件
轉(zhuǎn)自:https://blog.csdn.net/yx0628/article/details/83216568
在實(shí)際中,我們可能想要將不同類(lèi)型的日志分類(lèi)輸出到不同的文件中。
例如將日志分別輸出到demo1.log , demo2.log, demo3.log
編寫(xiě)log4j.properties,內(nèi)容如下:
system.logPath=D:/logs/ log4j.rootLogger=INFO,stdoutlog4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%nlog4j.logger.demo1=INFO,demo1 log4j.appender.demo1=org.apache.log4j.DailyRollingFileAppender log4j.appender.demo1.File=${system.logPath}/demo1.log log4j.appender.demo1.DatePattern='.'yyyy-MM-dd log4j.appender.demo1.layout=org.apache.log4j.PatternLayout log4j.appender.demo1.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} INFO - %m%nlog4j.logger.demo2=INFO,demo2 log4j.appender.demo2=org.apache.log4j.DailyRollingFileAppender log4j.appender.demo2.File=${system.logPath}/demo2.log log4j.appender.demo2.DatePattern='.'yyyy-MM-dd log4j.appender.demo2.layout=org.apache.log4j.PatternLayout log4j.appender.demo2.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} INFO - %m%nlog4j.logger.demo3=INFO,demo3 log4j.appender.demo3=org.apache.log4j.DailyRollingFileAppender log4j.appender.demo3.File=${system.logPath}/demo3.log log4j.appender.demo3.DatePattern='.'yyyy-MM-dd log4j.appender.demo3.layout=org.apache.log4j.PatternLayout log4j.appender.demo3.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} INFO - %m%n在程序中,我們配置對(duì)應(yīng)logger時(shí),通過(guò)聲明的demo1,demo2,demo3來(lái)獲取loggere對(duì)象。
public class LogTest {private static Logger alogger = LoggerFactory.getLogger("demo1");private static Logger blogger = LoggerFactory.getLogger("demo2");private static Logger clogger = LoggerFactory.getLogger("demo3");public static void main(String[] args) throws IOException {alogger.info("aaaaaaa");blogger.info("bbbbbbb");clogger.info("ccccccc");}}輸出結(jié)果在3個(gè)文件中:
1.7.案例
1.7.1.工程結(jié)構(gòu)
1.7.2.配置中添加pom依賴
<!--日志 start--> <dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>1.7.25</version> </dependency> <dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>1.7.25</version> </dependency>1.7.3.log4j.properties的內(nèi)容如下:
#log4j.rootLogger=INFO,stdout log4j.rootLogger=INFO,LOG_DEBUG,LOG_INFO,LOG_ERRORlog4j.appender.LOG_DEBUG=org.apache.log4j.RollingFileAppender log4j.appender.LOG_DEBUG.File=logs/collector.debug log4j.appender.LOG_DEBUG.MaxBackupIndex=10 log4j.appender.LOG_DEBUG.Threshold=DEBUG log4j.appender.LOG_DEBUG.MaxFileSize=128MB log4j.appender.LOG_DEBUG.Encoding=UTF-8 log4j.appender.LOG_DEBUG.layout=org.apache.log4j.PatternLayout log4j.appender.LOG_DEBUG.layout.ConversionPattern=%d %-4r [%t] %-5p %c(line-%L) - %m%nlog4j.appender.LOG_INFO=org.apache.log4j.RollingFileAppender log4j.appender.LOG_INFO.File=logs/collector.log log4j.appender.LOG_INFO.MaxBackupIndex=10 log4j.appender.LOG_INFO.Threshold=INFO log4j.appender.LOG_INFO.MaxFileSize=64MB log4j.appender.LOG_INFO.Encoding=UTF-8 log4j.appender.LOG_INFO.layout=org.apache.log4j.PatternLayout log4j.appender.LOG_INFO.layout.ConversionPattern=%d %-4r [%t] %-5p %c(line-%L) - %m%nlog4j.appender.LOG_ERROR=org.apache.log4j.RollingFileAppender log4j.appender.LOG_ERROR.File=logs/collector.error log4j.appender.LOG_ERROR.MaxBackupIndex=10 log4j.appender.LOG_ERROR.Threshold=ERROR log4j.appender.LOG_ERROR.MaxFileSize=64MB log4j.appender.LOG_ERROR.Encoding=UTF-8 log4j.appender.LOG_ERROR.layout=org.apache.log4j.PatternLayout log4j.appender.LOG_ERROR.layout.ConversionPattern=%d %-4r [%t] %-5p %c(line-%L) - %m%n## ·¢?í±¨?ˉê±????è???ó? log4j.logger.ALARM=INFO,ALARM log4j.appender.ALARM=org.apache.log4j.RollingFileAppender log4j.appender.ALARM.File=logs/collector_alarm.info log4j.appender.ALARM.MaxBackupIndex=10 log4j.appender.ALARM.Threshold=INFO log4j.appender.ALARM.MaxFileSize=64MB log4j.appender.ALARM.Encoding=UTF-8 log4j.appender.ALARM.layout=org.apache.log4j.PatternLayout log4j.appender.ALARM.layout.ConversionPattern=%d %-4r [%t] %-5p %c(line-%L) - %m%n log4j.additivity.ALARM=false# ============================================================================================================#system.logPath=D:/logs/ system.logPath=logs/ log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%nlog4j.logger.demo1=INFO,demo1 log4j.appender.demo1=org.apache.log4j.DailyRollingFileAppender log4j.appender.demo1.File=${system.logPath}/demo1.log log4j.appender.demo1.DatePattern='.'yyyy-MM-dd log4j.appender.demo1.layout=org.apache.log4j.PatternLayout log4j.appender.demo1.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} INFO - %m%nlog4j.logger.demo2=INFO,demo2 log4j.appender.demo2=org.apache.log4j.DailyRollingFileAppender log4j.appender.demo2.File=${system.logPath}/demo2.log log4j.appender.demo2.DatePattern='.'yyyy-MM-dd log4j.appender.demo2.layout=org.apache.log4j.PatternLayout log4j.appender.demo2.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} INFO - %m%nlog4j.logger.demo3=INFO,demo3 log4j.appender.demo3=org.apache.log4j.DailyRollingFileAppender log4j.appender.demo3.File=${system.logPath}/demo3.log log4j.appender.demo3.DatePattern='.'yyyy-MM-dd log4j.appender.demo3.layout=org.apache.log4j.PatternLayout log4j.appender.demo3.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} INFO - %m%n1.7.4.Java代碼LoggerTest
package demo;import org.apache.log4j.Logger;public class LoggerTest {private static final Logger ALARM = Logger.getLogger("ALARM");private static final Logger LOG = Logger.getLogger("LOG_INFO");public static void main(String[] args) {LOG.info("LOG info");LOG.warn("LOG war");LOG.error("LOG error");//LOG.error("LOG error");ALARM.info("ALARM info ");//ALERTLOG.error("ALERTLOG xxxxx ");}}1.7.5.LogTest
package demo;import org.slf4j.Logger; import org.slf4j.LoggerFactory;public class LogTest {private static final Logger logger1 = LoggerFactory.getLogger("demo1");private static final Logger logger2 = LoggerFactory.getLogger("demo2");private static final Logger logger3 = LoggerFactory.getLogger("demo3");private static final Logger ALARM = LoggerFactory.getLogger("ALARM");public static void main(String[] args) {logger1.info("aaaaaaa {}","xxx");logger2.info("bbbbbbb");logger3.info("ccccccc");ALARM.info("alarm xxxx {}", "yyyyyy");}}日志目錄:
總結(jié)
以上是生活随笔為你收集整理的1.Slf4j使用log4j的配置参数、配置sl4j/log4j输出到不同的文件、案例的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Hyper-V 网络设置 虚拟机固定Ip
- 下一篇: 美团外卖员怎么兼职 这些相关内容还需要了