97人妻人人揉人人躁人人,亚洲视频欧美视频在线视频,96久久精品人人人妻,v888老熟女av

您好,上海自動(dòng)化儀表自儀銷售網(wǎng)歡迎您!

官方微信|聯(lián)系我們|

上自儀微信

上海自動(dòng)化儀表股份有限公司,上海自動(dòng)化儀表有限公司

上海自動(dòng)化儀表自儀銷售網(wǎng)熱線:

021-56413113021-56725115

您是否在找: 上海自動(dòng)化儀表廠膜片壓力表|上海自動(dòng)化儀表廠不銹鋼壓力表|
上海自動(dòng)化儀表四廠簡(jiǎn)介

無(wú)紙記錄儀的工作原理及基礎(chǔ)知識(shí)

來(lái)源:上海自動(dòng)化儀表有限公司作者:發(fā)表時(shí)間:2017-12-13 10:04:17

 無(wú)紙記錄儀的工作原理及基礎(chǔ)知識(shí)

    無(wú)紙記錄儀對(duì)象用于記錄特定系統(tǒng)或應(yīng)用程序組件的消息。無(wú)紙記錄儀通常使用分層點(diǎn)分隔的命名空間命名。無(wú)紙記錄儀名稱可以是任意字符串,但通常應(yīng)該基于記錄組件的包名稱或類名稱,例如java.net或javax.swing。此外,還可以創(chuàng)建沒(méi)有存儲(chǔ)在記錄器名稱空間中的“匿名”記錄器。
    無(wú)紙記錄儀對(duì)象可以通過(guò)調(diào)用其中一個(gè)getLogger工廠方法來(lái)獲得。這些將創(chuàng)建一個(gè)新的記錄器或返回一個(gè)合適的現(xiàn)有無(wú)紙記錄儀。需要注意的是,如果沒(méi)有保存對(duì)Logger的強(qiáng)引用,任何時(shí)候getLogger工廠方法返回的Logger都可能被垃圾回收。
    無(wú)紙記錄儀消息將被轉(zhuǎn)發(fā)到注冊(cè)的處理程序?qū)ο?,它可以將消息轉(zhuǎn)發(fā)到各種目標(biāo),包括控制臺(tái),文件,操作系統(tǒng)日志等。
    每個(gè)無(wú)紙記錄儀都會(huì)跟蹤“父”記錄器,它是Logger命名空間中最近的現(xiàn)有祖先。
    每個(gè)記錄器都有一個(gè)與其關(guān)聯(lián)的“級(jí)別”。這反映了這個(gè)記錄器關(guān)心的最低水平。如果Logger的級(jí)別設(shè)置為null,則其有效級(jí)別從其父級(jí)繼承,而后者又可以從其父級(jí)以遞歸方式獲得,依此類推。
    日志級(jí)別可以根據(jù)日志配置文件中的屬性進(jìn)行配置,如LogManager類的描述中所述。但是也可以通過(guò)Logger.setLevel方法的調(diào)用動(dòng)態(tài)更改。如果記錄器的級(jí)別發(fā)生更改,則更改也可能會(huì)影響子級(jí)記錄器,因?yàn)槿魏渭?jí)別為空的子級(jí)記錄器都將從其父級(jí)繼承其有效級(jí)別。
    在每次記錄調(diào)用時(shí),記錄器最初對(duì)無(wú)紙記錄儀的有效日志級(jí)別執(zhí)行請(qǐng)求級(jí)別的便宜檢查(例如,SEVERE或FINE)。如果請(qǐng)求級(jí)別低于日志級(jí)別,則日志記錄調(diào)用立即返回。
    在通過(guò)這個(gè)初始的(便宜的)測(cè)試之后,無(wú)紙記錄儀將分配一個(gè)LogRecord來(lái)描述記錄消息。然后它會(huì)調(diào)用一個(gè)過(guò)濾器(如果存在)來(lái)更詳細(xì)地檢查記錄是否應(yīng)該發(fā)布。如果通過(guò)它將發(fā)布到其輸出處理程序。默認(rèn)情況下,無(wú)紙記錄儀也會(huì)發(fā)布到其父處理程序,遞歸地向上。
    每個(gè)無(wú)紙記錄儀可能有一個(gè)與其關(guān)聯(lián)的ResourceBundle名稱。命名包將用于本地化日志消息。如果無(wú)紙記錄儀沒(méi)有自己的ResourceBundle名稱,那么它將從其父文件繼承ResourceBundle名稱,遞歸到樹(shù)上。
    大部分無(wú)紙記錄儀輸出方法都帶有“msg”參數(shù)。此msg參數(shù)可能是原始值或本地化密鑰。在格式化期間,如果無(wú)紙記錄儀具有(或繼承)本地化ResourceBundle,并且ResourceBundle具有msg字符串的映射,則msg字符串將由本地化值替換。否則使用原始的msg字符串。通常情況下,格式化程序使用java.text.MessageFormat樣式格式來(lái)格式化參數(shù),例如格式字符串“{0} {1}”會(huì)將兩個(gè)參數(shù)格式化為字符串。
    將ResourceBundle名稱映射到ResourceBundles時(shí),Logger將首先嘗試使用Thread的ContextClassLoader。如果是null,它將嘗試SystemClassLoader。作為初始實(shí)現(xiàn)中的一個(gè)臨時(shí)轉(zhuǎn)換功能,如果Logger無(wú)法從ContextClassLoader或SystemClassLoader中定位ResourceBundle,則Logger將搜索類堆棧,并使用連續(xù)調(diào)用的ClassLoaders嘗試定位ResourceBundle。 (此調(diào)用堆棧搜索允許容器轉(zhuǎn)換為使用ContextClassLoaders,并可能在未來(lái)的版本中被刪除。)
    格式化(包括本地化)是輸出處理程序的責(zé)任,通常會(huì)調(diào)用格式化程序。
    請(qǐng)注意,格式不需要同步發(fā)生。它可能會(huì)延遲,直到一個(gè)LogRecord實(shí)際寫入到一個(gè)外部接收器。
日志方法分為五個(gè)主要類別:
(1)有一組“日志”方法將日志級(jí)別,消息字符串和可選的一些參數(shù)作為消息字符串。
(2)有一組“logp”方法(對(duì)于“log精確”),就像“log”方法一樣,但也需要一個(gè)明確的源類名和方法名。
(3)有一套類似“logp”方法的“logrb”方法(對(duì)于“log with resource bundle”),但是也需要一個(gè)明確的資源包名來(lái)用于本地化日志消息。
(4)有跟蹤方法條目(“進(jìn)入”方法),方法返回(“退出”方法)和拋出異常(“拋出”方法)的便利方法。
(5)最后,在最簡(jiǎn)單的情況下,有一套簡(jiǎn)便的方法,當(dāng)開(kāi)發(fā)人員只需要在給定的日志級(jí)別上記錄一個(gè)簡(jiǎn)單的字符串時(shí)。這些方法以標(biāo)準(zhǔn)級(jí)別名稱(“嚴(yán)重”,“警告”,“信息”等)命名,并采用一個(gè)參數(shù)即消息字符串。
    對(duì)于不采用顯式源名稱和方法名稱的方法,Logging框架將“盡最大努力”確定將哪個(gè)類和方法調(diào)用到日志記錄方法中。但是,意識(shí)到這個(gè)自動(dòng)推斷的信息可能只是近似的(甚至可能是相當(dāng)錯(cuò)誤的?。T试S虛擬機(jī)在JITing時(shí)進(jìn)行廣泛的優(yōu)化,并可能完全刪除堆棧幀,從而無(wú)法可靠地定位調(diào)用類和方法。記錄器上的所有方法都是多線程安全的。
    子類化信息:請(qǐng)注意,LogManager類可以為命名空間中的任何點(diǎn)提供自己的命名記錄器實(shí)現(xiàn)。因此,Logger的任何子類(除非它們與一個(gè)新的LogManager類一起實(shí)現(xiàn))應(yīng)該注意從LogManager類獲取一個(gè)Logger實(shí)例,并且應(yīng)該將諸如“isLoggable”和“log(LogRecord)”等操作委托給該實(shí)例。注意為了攔截所有的日志輸出,子類只需要重寫log(LogRecord)方法。所有其他日志記錄方法在此日志(LogRecord)方法上實(shí)現(xiàn)為調(diào)用。