1. 程式人生 > >log4j日誌配置(超詳細)

log4j日誌配置(超詳細)

一、Log4j簡介

Log4j有三個主要的元件:Loggers(記錄器),Appenders (輸出源)和Layouts(佈局)。這裡可簡單理解為日誌類別,日誌要輸出的地方和日誌以何種形式輸出。綜合使用這三個元件可以輕鬆地記錄資訊的型別和級別,並可以在執行時控制日誌輸出的樣式和位置。

1、Loggers

Loggers元件在此係統中被分為五個級別:DEBUG、INFO、WARN、ERROR和FATAL。這五個級別是有順序的,DEBUG < INFO < WARN < ERROR < FATAL,分別用來指定這條日誌資訊的重要程度,明白這一點很重要,Log4j有一個規則:只輸出級別不低於設定級別的日誌資訊,假設Loggers級別設定為INFO,則INFO、WARN、ERROR和FATAL級別的日誌資訊都會輸出,而級別比INFO低的DEBUG則不會輸出。

2、Appenders

禁用和使用日誌請求只是Log4j的基本功能,Log4j日誌系統還提供許多強大的功能,比如允許把日誌輸出到不同的地方,如控制檯(Console)、檔案(Files)等,可以根據天數或者檔案大小產生新的檔案,可以以流的形式傳送到其它地方等等。

常使用的類如下:

org.apache.log4j.ConsoleAppender(控制檯)
org.apache.log4j.FileAppender(檔案)
org.apache.log4j.DailyRollingFileAppender(每天產生一個日誌檔案)
org.apache.log4j.RollingFileAppender
(檔案大小到達指定尺寸的時候產生一個新的檔案) org.apache.log4j.WriterAppender(將日誌資訊以流格式傳送到任意指定的地方)

配置模式:

log4j.appender.appenderName = className
log4j.appender.appenderName.Option1 = value1
…
log4j.appender.appenderName.OptionN = valueN

3、Layouts

有時使用者希望根據自己的喜好格式化自己的日誌輸出,Log4j可以在Appenders的後面附加Layouts來完成這個功能。Layouts提供四種日誌輸出樣式,如根據HTML樣式、自由指定樣式、包含日誌級別與資訊的樣式和包含日誌時間、執行緒、類別等資訊的樣式。

常使用的類如下:

org.apache.log4j.HTMLLayout(以HTML表格形式佈局)
org.apache.log4j.PatternLayout(可以靈活地指定佈局模式)
org.apache.log4j.SimpleLayout(包含日誌資訊的級別和資訊字串)
org.apache.log4j.TTCCLayout(包含日誌產生的時間、執行緒、類別等資訊)

配置模式:

log4j.appender.appenderName.layout =className
log4j.appender.appenderName.layout.Option1 = value1
…
log4j.appender.appenderName.layout.OptionN = valueN

二、配置詳解

在實際應用中,要使Log4j在系統中執行須事先設定配置檔案。配置檔案事實上也就是對Logger、Appender及Layout進行相應設定。Log4j支援兩種配置檔案格式,一種是XML格式的檔案,一種是properties屬性檔案。下面以properties屬性檔案為例介紹log4j.properties的配置。

1、配置根Logger:

log4j.rootLogger = [ level ] , appenderName1, appenderName2, …
level :設定日誌記錄的最低級別,可設的值有OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者自定義的級別,Log4j建議只使用中間四個級別(ERROR、WARN、INFO、DEBUG)。通過在這裡設定級別,您可以控制應用程式中相應級別的日誌資訊的開關,比如在這裡設定了INFO級別,則應用程式中所有DEBUG級別的日誌資訊將不會被打印出來。
appenderName:就是指定日誌資訊要輸出到哪裡。可以同時指定多個輸出目的地,用逗號隔開。
例如:log4j.rootLogger=INFO,A1,B2,C3

2、配置日誌資訊輸出目的地(appender):
log4j.appender.appenderName = className
appenderName:自定義appderName,在log4j.rootLogger設定中使用;
className:可設值如下:

org.apache.log4j.ConsoleAppender(控制檯)
org.apache.log4j.FileAppender(檔案)
org.apache.log4j.DailyRollingFileAppender(每天產生一個日誌檔案)
org.apache.log4j.RollingFileAppender(檔案大小到達指定尺寸的時候產生一個新的檔案)
org.apache.log4j.WriterAppender(將日誌資訊以流格式傳送到任意指定的地方)

(1)ConsoleAppender選項:
Threshold=WARN:指定日誌資訊的最低輸出級別,預設為DEBUG。
ImmediateFlush=true:表示所有訊息都會被立即輸出,設為false則不輸出,預設值是true。
Target=System.err:預設值是System.out。

(2)FileAppender選項:
Threshold=WARN:指定日誌資訊的最低輸出級別,預設為DEBUG。
ImmediateFlush=true:表示所有訊息都會被立即輸出,設為false則不輸出,預設值是true。
Append=false:true表示訊息增加到指定檔案中,false則將訊息覆蓋指定的檔案內容,預設值是true。
File=D:/logs/logging.log4j:指定訊息輸出到logging.log4j檔案中。

(3)DailyRollingFileAppender選項:
Threshold=WARN:指定日誌資訊的最低輸出級別,預設為DEBUG。
ImmediateFlush=true:表示所有訊息都會被立即輸出,設為false則不輸出,預設值是true。
Append=false:true表示訊息增加到指定檔案中,false則將訊息覆蓋指定的檔案內容,預設值是true。
File=D:/logs/logging.log4j:指定當前訊息輸出到logging.log4j檔案中。
DatePattern=’.’yyyy-MM:每月滾動一次日誌檔案,即每月產生一個新的日誌檔案。當前月的日誌檔名為logging.log4j,前一個月的日誌檔名為logging.log4j.yyyy-MM。
另外,也可以指定按周、天、時、分等來滾動日誌檔案,對應的格式如下:
1)’.’yyyy-MM:每月
2)’.’yyyy-ww:每週
3)’.’yyyy-MM-dd:每天
4)’.’yyyy-MM-dd-a:每天兩次
5)’.’yyyy-MM-dd-HH:每小時
6)’.’yyyy-MM-dd-HH-mm:每分鐘

(4)RollingFileAppender選項:
Threshold=WARN:指定日誌資訊的最低輸出級別,預設為DEBUG。
ImmediateFlush=true:表示所有訊息都會被立即輸出,設為false則不輸出,預設值是true。
Append=false:true表示訊息增加到指定檔案中,false則將訊息覆蓋指定的檔案內容,預設值是true。
File=D:/logs/logging.log4j:指定訊息輸出到logging.log4j檔案中。
MaxFileSize=100KB:字尾可以是KB, MB 或者GB。在日誌檔案到達該大小時,將會自動滾動,即將原來的內容移到logging.log4j.1檔案中。
MaxBackupIndex=2:指定可以產生的滾動檔案的最大數,例如,設為2則可以產生logging.log4j.1,logging.log4j.2兩個滾動檔案和一個logging.log4j檔案。

3、配置日誌資訊的輸出格式(Layout):
log4j.appender.appenderName.layout=className
className:可設值如下:

org.apache.log4j.HTMLLayout(以HTML表格形式佈局)
org.apache.log4j.PatternLayout(可以靈活地指定佈局模式)
org.apache.log4j.SimpleLayout(包含日誌資訊的級別和資訊字串)
org.apache.log4j.TTCCLayout(包含日誌產生的時間、執行緒、類別等等資訊)

(1)HTMLLayout選項:
LocationInfo=true:輸出java檔名稱和行號,預設值是false。
Title=My Logging: 預設值是Log4J Log Messages。
(2)PatternLayout選項:
ConversionPattern=%m%n:設定以怎樣的格式顯示訊息。

格式化符號說明:

%p:輸出日誌資訊的優先順序,即DEBUG,INFO,WARN,ERROR,FATAL。
%d:輸出日誌時間點的日期或時間,預設格式為ISO8601,也可以在其後指定格式,如:%d{yyyy/MM/dd HH:mm:ss,SSS}。
%r:輸出自應用程式啟動到輸出該log資訊耗費的毫秒數。
%t:輸出產生該日誌事件的執行緒名。
%l:輸出日誌事件的發生位置,相當於%c.%M(%F:%L)的組合,包括類全名、方法、檔名以及在程式碼中的行數。例如:test.TestLog4j.main(TestLog4j.java:10)。
%c:輸出日誌資訊所屬的類目,通常就是所在類的全名。
%M:輸出產生日誌資訊的方法名。
%F:輸出日誌訊息產生時所在的檔名稱。
%L::輸出程式碼中的行號。
%m::輸出程式碼中指定的具體日誌資訊。
%n:輸出一個回車換行符,Windows平臺為”rn”,Unix平臺為”n”。
%x:輸出和當前執行緒相關聯的NDC(巢狀診斷環境),尤其用到像java servlets這樣的多客戶多執行緒的應用中。
%%:輸出一個”%”字元。
另外,還可以在%與格式字元之間加上修飾符來控制其最小長度、最大長度、和文字的對齊方式。如:
1) c:指定輸出category的名稱,最小的長度是20,如果category的名稱長度小於20的話,預設的情況下右對齊。
2)%-20c:”-“號表示左對齊。
3)%.30c:指定輸出category的名稱,最大的長度是30,如果category的名稱長度大於30的話,就會將左邊多出的字元截掉,但小於30的話也不會補空格。

附:Log4j比較全面的配置

Log4j配置檔案實現了輸出到控制檯、檔案、回滾檔案、傳送日誌郵件、輸出到資料庫日誌表、自定義標籤等全套功能。
log4j.rootLogger=DEBUG,console,dailyFile,im,…

控制檯(console)

log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.Threshold=DEBUG
log4j.appender.console.ImmediateFlush=true
log4j.appender.console.Target=System.err
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=[%-5p] %d(%r) --> [%t] %l: %m %x %n

日誌檔案(logFile)

log4j.appender.logFile=org.apache.log4j.FileAppender
log4j.appender.logFile.Threshold=DEBUG
log4j.appender.logFile.ImmediateFlush=true
log4j.appender.logFile.Append=true
log4j.appender.logFile.File=D:/logs/log.log4j
log4j.appender.logFile.layout=org.apache.log4j.PatternLayout
log4j.appender.logFile.layout.ConversionPattern=[%-5p] %d(%r) --> [%t] %l: %m %x %n

回滾檔案(rollingFile)

log4j.appender.rollingFile=org.apache.log4j.RollingFileAppender
log4j.appender.rollingFile.Threshold=DEBUG
log4j.appender.rollingFile.ImmediateFlush=true
log4j.appender.rollingFile.Append=true
log4j.appender.rollingFile.File=D:/logs/log.log4j
log4j.appender.rollingFile.MaxFileSize=200KB
log4j.appender.rollingFile.MaxBackupIndex=50
log4j.appender.rollingFile.layout=org.apache.log4j.PatternLayout
log4j.appender.rollingFile.layout.ConversionPattern=[%-5p] %d(%r) --> [%t] %l: %m %x %n

定期回滾日誌檔案(dailyFile)

log4j.appender.dailyFile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.dailyFile.Threshold=DEBUG
log4j.appender.dailyFile.ImmediateFlush=true
log4j.appender.dailyFile.Append=true
log4j.appender.dailyFile.File=D:/logs/log.log4j
log4j.appender.dailyFile.DatePattern='.'yyyy-MM-dd
log4j.appender.dailyFile.layout=org.apache.log4j.PatternLayout
log4j.appender.dailyFile.layout.ConversionPattern=[%-5p] %d(%r) --> [%t] %l: %m %x %n

應用於socket

log4j.appender.socket=org.apache.log4j.RollingFileAppender
log4j.appender.socket.RemoteHost=localhost
log4j.appender.socket.Port=5001
log4j.appender.socket.LocationInfo=true

Set up for Log Factor 5

log4j.appender.socket.layout=org.apache.log4j.PatternLayout
log4j.appender.socket.layout.ConversionPattern=[%-5p] %d(%r) --> [%t] %l: %m %x %n

Log Factor 5 Appender

log4j.appender.LF5_APPENDER=org.apache.log4j.lf5.LF5Appender
log4j.appender.LF5_APPENDER.MaxNumberOfRecords=2000

傳送日誌到指定郵件

log4j.appender.mail=org.apache.log4j.net.SMTPAppender
log4j.appender.mail.Threshold=FATAL
log4j.appender.mail.BufferSize=10
log4j.appender.mail.From = [email protected].com
log4j.appender.mail.SMTPHost=mail.com
log4j.appender.mail.Subject=Log4J Message
log4j.appender.mail.To= [email protected].com
log4j.appender.mail.layout=org.apache.log4j.PatternLayout
log4j.appender.mail.layout.ConversionPattern=[%-5p] %d(%r) --> [%t] %l: %m %x %n

應用於資料庫

log4j.appender.database=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.database.URL=jdbc:mysql://localhost:3306/test
log4j.appender.database.driver=com.mysql.jdbc.Driver
log4j.appender.database.user=root
log4j.appender.database.password=
log4j.appender.database.sql=INSERT INTO LOG4J (Message) VALUES('=[%-5p] %d(%r) --> [%t] %l: %m %x %n')
log4j.appender.database.layout=org.apache.log4j.PatternLayout
log4j.appender.database.layout.ConversionPattern=[%-5p] %d(%r) --> [%t] %l: %m %x %n

自定義Appender

log4j.appender.im = net.cybercorlin.util.logger.appender.IMAppender
log4j.appender.im.host = mail.cybercorlin.net
log4j.appender.im.username = username
log4j.appender.im.password = password
log4j.appender.im.recipient = [email protected].net
log4j.appender.im.layout=org.apache.log4j.PatternLayout
log4j.appender.im.layout.ConversionPattern=[%-5p] %d(%r) --> [%t] %l: %m %x %n

log4j的強大功能無可置疑,但實際應用中免不了遇到某個功能需要輸出獨立的日誌檔案的情況,怎樣才能把所需的內容從原有日誌中分離,形成單獨的日誌檔案呢?其實只要在現有的log4j基礎上稍加配置即可輕鬆實現這一功能。

先看一個常見的log4j.properties檔案,它是在控制檯和myweb.log檔案中記錄日誌:

log4j.rootLogger=DEBUG, stdout, logfile

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n

log4j.appender.logfile=org.apache.log4j.RollingFileAppender
log4j.appender.logfile.File=${myweb.root}/WEB-INF/log/myweb.log
log4j.appender.logfile.MaxFileSize=512KB
log4j.appender.logfile.MaxBackupIndex=5
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n

如果想對不同的類輸出不同的檔案(以cn.com.Test為例),先要在Test.java中定義:

private static Log logger = LogFactory.getLog(Test.class);

然後在log4j.properties中加入:

log4j.logger.cn.com.Test= DEBUG, test
log4j.appender.test=org.apache.log4j.FileAppender
log4j.appender.test.File=${myweb.root}/WEB-INF/log/test.log
log4j.appender.test.layout=org.apache.log4j.PatternLayout
log4j.appender.test.layout.ConversionPattern=%d %p [%c] - %m%n

也就是讓cn.com.Test中的logger使用log4j.appender.test所做的配置。

但是,如果在同一類中需要輸出多個日誌檔案呢?其實道理是一樣的,先在Test.java中定義:

private static Log logger1 = LogFactory.getLog("myTest1");

private static Log logger2 = LogFactory.getLog("myTest2");

然後在log4j.properties中加入:

log4j.logger.myTest1= DEBUG, test1

log4j.appender.test1=org.apache.log4j.FileAppender
log4j.appender.test1.File=${myweb.root}/WEB-INF/log/test1.log
log4j.appender.test1.layout=org.apache.log4j.PatternLayout
log4j.appender.test1.layout.ConversionPattern=%d %p [%c] - %m%n  

log4j.logger.myTest2= DEBUG, test2

log4j.appender.test2=org.apache.log4j.FileAppender
log4j.appender.test2.File=${myweb.root}/WEB-INF/log/test2.log
log4j.appender.test2.layout=org.apache.log4j.PatternLayout
log4j.appender.test2.layout.ConversionPattern=%d %p [%c] - %m%n

  也就是在用logger時給它一個自定義的名字(如這裡的”myTest1”),然後在log4j.properties中做出相應配置即可。別忘了不同日誌要使用不同的logger(如輸出到test1.log的要用logger1.info(“abc”))。

  還有一個問題,就是這些自定義的日誌預設是同時輸出到log4j.rootLogger所配置的日誌中的,如何能只讓它們輸出到自己指定的日誌中呢?別急,這裡有個開關:

log4j.additivity.myTest1 = false

  它用來設定是否同時輸出到log4j.rootLogger所配置的日誌中,設為false就不會輸出到其它地方啦!注意這裡的”myTest1”是你在程式中給logger起的那個自定義的名字!

如果你說,我只是不想同時輸出這個日誌到log4j.rootLogger所配置的logfile中,stdout裡我還想同時輸出呢!那也好辦,把你的log4j.logger.myTest1 = DEBUG, test1改為下式就OK啦!

log4j.logger.myTest1=DEBUG, test1, stdout

另外:

log4j.rootCategory

是對根類的設定,如不說明,以下的子類都要繼承這些設定
log4j.category.*

是對自定義類的設定,可以對類、包和工程單獨設定
Category的家族關係是通過“.”來說明的,比如x是x.y的父類。
預設情況下,子類要繼承父類的全部設定,比如:

log4j.rootCategory=INFO, dest1
log4j.category.MyCategory=DEBUG
dest1會輸出INFO以上的訊息
對於Category logger = Category.getInstance(“MyCategory”)會輸出DEBUG以上的訊息,因為MyCategory繼承了根類的設定,輸出到dest1
如果使用下面的設定,每條訊息會在dest1中輸出兩次:

log4j.rootCategory = INFO, dest1
log4j.category.MyCategory = DEBUG, dest1
記住,MyCategory繼承了根類的設定。
可以指定子類不繼承父類的設定,方法是指定log4j.additivity.*=false,如上例中:

log4j.rootCategory = INFO, dest1
log4j.additivity.MyCategory = false
log4j.category.MyCategory = DEBUG, dest1

log4j.xml 的配置方式:

Xml 程式碼

<?xml version="1.0" encoding="UTF-8"?>  
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">    
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">    
    <appender name="appender1"  
        class="org.apache.log4j.RollingFileAppender">  
        <param name="File" value="logfile08.html" />  
        <param name="MaxFileSize" value="1MB" />  
        <param name="MaxBackupIndex" value="5" />  
        <layout class="org.apache.log4j.HTMLLayout">  
        </layout>  
    </appender>    
    <root>  
        <level value="debug" />  
        <appender-ref ref="appender1" />  
    </root>  
</log4j:configuration>  
 # 將日誌傳送到email
 log4j.logger.MailLog=WARN,A5
 #  APPENDER A5
 log4j.appender.A5=org.apache.log4j.net.SMTPAppender
 log4j.appender.A5.BufferSize=5
 log4j.appender.A5.To[email protected].com
 log4j.appender.A5.From[email protected].com
 log4j.appender.A5.Subject=ErrorLog
 log4j.appender.A5.SMTPHost=smtp.263.net
 log4j.appender.A5.layout=org.apache.log4j.PatternLayout
 log4j.appender.A5.layout.ConversionPattern=%-4r %-5p [%t] %37c %3x - %m%n

3.呼叫程式碼:

 //把日誌傳送到mail

 Logger logger3 = Logger.getLogger("MailLog");
 logger3.warn("warn!!!");
 logger3.error("error!!!");
 logger3.fatal("fatal!!!");

相關推薦

log4j日誌配置詳細

一、Log4j簡介 Log4j有三個主要的元件:Loggers(記錄器),Appenders (輸出源)和Layouts(佈局)。這裡可簡單理解為日誌類別,日誌要輸出的地方和日誌以何種形式輸出。綜合使用這三個元件可以輕鬆地記錄資訊的型別和級別,並可以在執行時控

MySql 5.6.21安裝及配置詳細

cal 開始 流程 重復 配置 路徑 進行 驗證 高級 一、安裝    ----->點擊接受協議 ----->下一步    這裏選擇我只需要安裝服務器,因此選擇 Server only -------->下一步    -------->點擊execu

Nginx+Tomcat實現不同專案域名對映配置詳細

1.域名:先解析一個域名對應固定伺服器IP,例域名:www.csdnTest.com對映伺服器IP:116.110.78.1202.本機主機:在伺服器(116.110.78.120)上編輯本機主機配置檔案,命令:vi  /etc/hosts,在"127.0.0.1 local

Log4j.xml配置詳細

獲取logger Logger.getRootLogger() 獲取根logger Logger.getLogger(String name)獲取子logger Logger.getLogger(Class clazz)或 Logger.getLogger(clazz.getName()) 設定日誌級

詳細從零開始安裝與配置hadoop完全分散式環境

強調!!! 使用者名稱稱要相同,否則可能出現稀奇古怪的錯誤!!!(我就因為這個問題,在後面快裝完的時候不得不從頭再來) 原因:Hadoop要求所有機器上Hadoop的部署目錄結構要求相同(因為在啟動時按與主節點相同的目錄啟動其它任務節點),並且都有一

windows環境下caffe編譯以及python介面配置教程詳細

前言: 這週一直在搞caffe。編譯開原始碼是一件很痛苦的事情,在教程開始之前,還是建議同學要有耐心,不要怕麻煩,一步一步來,等到調通之日,發現確實沒有想象之中那麼複雜。 一、材料準備 1、下載ca

三分鐘學會用SpringMVC搭建最小系統詳細

springmvc+mybatis dubbo+zookeeper restful redis分布式緩存 kafka 前言做 Java Web 開發的你,一定聽說過SpringMVC的大名,作為現在運用最廣泛的Java框架,它到目前為止依然保持著強大的活力和廣泛的用戶群。本文介紹如何用ecli

ASP.NET頁面之間傳值的方式之QueryString詳細

res p s orm font utf-8 但是 partial .aspx object QueryString Querystring也叫查詢字符串,這種頁面間傳遞數據是利用網頁地址URL。如果要從A頁面跳轉到B頁面,則可以用Request.Redirect(”B.a

自動化運維之Ansible應用基礎模塊詳細

rip gid 軟件 start 文件路徑 use 發送 con 移除 Ansible是一種基於模塊進行工作的框架結構。批量部署能力就是由Ansible所運行的模塊實現的。簡而言之Ansible是基於“模塊”完成各種“任務”的。 Ansible常用的核心模塊 模塊的基本語法

SqlServer數據庫SQL語句詳細

ESS 網絡 class getdate dcom 安排 同名 des 統計 一、基礎 1、說明:創建數據庫 CREATE DATABASE database-name 2、說明:刪除數據庫 drop database dbname 3、說明:備份sql server --

Ubuntu18.04下基於 Anaconda3 安裝編譯 Caffe-GPU詳細

寫這篇部落格的時候已經不知道是第幾次安裝caffe了,每次安裝都會遇到不同的問題,有時候解決報錯真的是接近崩潰的邊緣,故將遇到的問題及解決方法整理。也綜合了以前的多次安裝方法,寫了Ubuntu18.04上基於 Anaconda3 安裝編譯 Caffe-GPU的詳細教程。由於教程之詳細,

自動化運維之Ansible應用基礎模組詳細

Ansible是一種基於模組進行工作的框架結構。批量部署能力就是由Ansible所執行的模組實現的。簡而言之Ansible是基於“模組”完成各種“任務”的。 Ansible常用的核心模組 模組的基本語法如下 ansible [主機] [-m 模組] [-a args] //命令格式 # ansible

框架整合——SpringMVC與MyBatis整合詳細

SpringMVC與MyBatis是我們現在最流行的開發框架組合之一,這裡我來整理一下框架的整合搭建過程 前言 使用IDE:IntelliJ IDEA JDK:1.8 開啟IDEA,新建maven工程 第一步:開啟IDEA,點選Create New Pro

okhttp原始碼分析——基本流程詳細

1.okhttp原始碼分析(一)——基本流程(超詳細) 2.okhttp原始碼分析(二)——RetryAndFollowUpInterceptor過濾器 3.okhttp原始碼分析(三)——CacheInterceptor過濾器 4.okhttp原始碼分析(四)——Conn

solr簡介、學習詳細過程!詳細~

solr是什麼呢? 一、Solr它是一種開放原始碼的、基於 Lucene Java 的搜尋伺服器,易於加入到 Web 應用程式中。 二、Solr 提供了層面搜尋(就是統計)、命中醒目顯示並且支援多種輸出格式(包括XML/XSLT 和JSON等格式)。它易於安裝和配置,而且附帶了一個基於 H

詳細POJ3104 Drying(讓我痛不欲生的二分

Description It is very hard to wash and especially to dry clothes in winter. But Jane is a very smart girl. She is not afraid of this boring pr

詳細在使用mybatis時遇到查詢結果返回為空NULL的情況,但是查資料庫能查到

這個問題困擾了我一個下午,看了很多部落格都沒有我中情況,所有寫給和我有一樣錯誤的 由於我的實體類裡聲明瞭其它實體類,所以在mapper.xml檔案裡要使用resultMap,在resultMap裡要使用association引入,否則會報錯   下面貼出我的實體類: pub

RAP2環境搭建整理詳細

RAP2是阿里開源的介面管理平臺,最近搭建了一下,將部署文件整理如下: 如果途中遇坑會在文章末尾記錄下來嘻嘻 首先,確定環境是否部署好。 RAP2所需的環境為: node.js 8.9.4+ mysql 5.7+ redis 4.0+ centos 6.5(後來搭建的時候升至最新了) 確定以上

Python機器學習實戰專案--預測紅酒質量詳細

用Scikit-Learn(sklearn)建立模型 1 環境搭建  Python 3+NumPy+Pandas+Scikit-Learn (sklearn) 2 匯入庫和模組 Numpy是比Python自身的巢狀列表(nested list structure)結構要高效的多的一

AndroidStudio中匯入module詳細

      1.依次點選File–>new–>Import Module,如下圖: 2.在彈出視窗中選中需要匯入的第三方資源中的library資料夾,並點選ok: 3.在接下來的視窗將Module name修改為與Module相關的名稱,並依次點選n