1.Slf4j使用log4j的配置参数、配置sl4j/log4j输出到不同的文件、案例
1.Slf4j使用log4j的配置參數
轉自:https://blog.csdn.net/yx0628/article/details/83214387
slf4j,即簡單日志門面(Simple Logging Facade for Java),不是具體的日志解決方案,它只服務于各種各樣的日志系統。按照官方的說法,SLF4J是一個用于日志系統的簡單Facade,允許最終用戶在部署其應用時使用其所希望的日志系統。比如用戶可以自己選擇使用 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.關于具體的配置 log4j.properties:
### 設置rootLogger ### log4j.rootLogger = info,stdout,D,E### 輸出信息到控制臺 ### ### 控制臺輸出 log4j.appender.stdout = org.apache.log4j.ConsoleAppender ### 默認是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 級別以上的日志到=D://logs/error.log ### ### 以每天一個文件輸出日志 log4j.appender.D = org.apache.log4j.DailyRollingFileAppender ### 輸出文件目錄 log4j.appender.D.File = D://logs/log.log ### 消息增加到指定的文件中,false表示覆蓋指定文件內容 log4j.appender.D.Append = true ### 輸出信息最低級別 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 級別以上的日志到=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.日志級別
主要有以下:
?ERROR錯誤
?WARN警告
?INFO一般信息
?DEBUG調試信息
1.4.常用的輸出位置
?ConsoleAppender控制臺
?FileAppender文件
?DailyRollingFileAppender 每天產生一個日志文件
?RollingFileAppender 文件大小達到指定尺寸時產生一個新文件
?WriterAppeder 將日志信息以流格式發送到指定地方
1.5.格式化輸出
-X號: X信息輸出時左對齊; %p: 輸出日志信息優先級,即DEBUG,INFO,WARN,ERROR,FATAL, %d: 輸出日志時間點的日期或時間,默認格式為ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},輸出類似:2002年10月18日 22:10:28,921 %r: 輸出自應用啟動到輸出該log信息耗費的毫秒數 %c: 輸出日志信息所屬的類目,通常就是所在類的全名 %t: 輸出產生該日志事件的線程名 %l: 輸出日志事件的發生位置,相當于%C.%M(%F:%L)的組合,包括類目名、發生的線程,以及在代碼中的行數。舉例:Testlog4.main (TestLog4.java:10) %x: 輸出和當前線程相關聯的NDC(嵌套診斷環境),尤其用到像Java servlets這樣的多客戶多線程的應用中。 %%: 輸出一個”%”字符 %F: 輸出日志消息產生時所在的文件名稱 %L: 輸出代碼中的行號 %m: 輸出代碼中指定的消息,產生的日志具體信息有時我們看到 %-5p 或者 %5p 意思就是輸出日志級別時,左對齊或右對齊,4個字母的 INFO / WARN 要補一個空格,才能和 DEBUG / ERROR對齊格式。1.6.配置sl4j/log4j輸出到不同的文件
轉自:https://blog.csdn.net/yx0628/article/details/83216568
在實際中,我們可能想要將不同類型的日志分類輸出到不同的文件中。
例如將日志分別輸出到demo1.log , demo2.log, demo3.log
編寫log4j.properties,內容如下:
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在程序中,我們配置對應logger時,通過聲明的demo1,demo2,demo3來獲取loggere對象。
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");}}輸出結果在3個文件中:
1.7.案例
1.7.1.工程結構
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的內容如下:
#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");}}日志目錄:
總結
以上是生活随笔為你收集整理的1.Slf4j使用log4j的配置参数、配置sl4j/log4j输出到不同的文件、案例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Hyper-V 网络设置 虚拟机固定Ip
- 下一篇: 美团外卖员怎么兼职 这些相关内容还需要了