亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? log4j_usage_detail.txt

?? log4j使用文檔中的中上品。 包括:1
?? TXT
?? 第 1 頁 / 共 3 頁
字號:
常見的日志實現及其比較

目前常見的基于 Java 的日志實現有 Apache Log4j、Jakarta commons logging、Java Logging APIs 包和 Apache Excalibur LogKit 等。這些日志實現的介紹如下:

Apache Log4j

Log4j 最早可追溯至 1996 年初的 EU SEMPER(歐洲安全電子市場)項目,經過數次優化和改進,該 API 曾作為 IBM alphaWorks 的一個項目按 IBM 公共許可證分發,由開放源碼權威機構認證。現在,Log4j 已經成為 Apache Logging Service 的項目之一,在 Apache Software License 下分發。有關 Apache Log4j 的更多信息,請訪問 Apache Log4j 的主頁,或 IBM developerWorks 文章:Log4j delivers control over logging。

Jakarta commons logging

Jakarta commons logging (JCL) 是 Apache Jakarta 項目的 commons 子項目的一個組件,其是應用程序和底層的具體日志實現之間的接口。基于 JCL 的統一接口,開發人員可以選擇不同的日志實現作為底層的日志基礎,而不影響上層的應用程序。同時,JCL 中也默認提供了兩個基本的簡單日志實現:NoOpLog 和 SimpleLog。如果沒有指定底層的日志實現類,應用程序將默認調用 SimpleLog。有關 Jakarta commons logging 的更多信息,請訪問 Jakarta commons logging 的主頁。

Java Logging APIs

從 J2SE 1.4 開始,Java 2 SDK 中開始提供了日志功能,包含在 java.util.logging 包中。有關 Java Logging APIs 的更多信息,請查閱Java 2 JDK 文檔或 Java Logging APIs的主頁。

Apache Excalibur LogKit

LogKit 最早曾是 Apache Avalon 項目的組成部分,隨著項目的發展與成熟,Avalon 被拆分為多個項目。LogKit 被歸入其中一個分支-Apache Excalibur 項目中。有關Apache Excalibur LogKit的更多信息,請訪問 Apache Excalibur LogKit 的主頁。

常見日志實現的比較

以上四種常見的日志實現各有所長,在實際開發過程中,需要分析應用程序的具體情況,選擇適合項目開發的日志實現。本文通過分析 Apache Log4j、Jakarta commons logging、Java Logging APIs 和 Apache Excalibur LogKit 的優缺點,列舉了一些常用的開發實踐經驗。

1) 因為多年的發展和改進,Apache Log4j 具有完善的功能和豐富的特性,也成為了基于 Java 的日志實現框架的事實標準。但由于 Log4j 是 Apache 開放源代碼項目,所以,Apache Log4j 不太適合項目開發對開源庫的使用有一定限制的情況。

2) JCL 為所有底層的日志實現提供了一個統一的接口,但其自身實現的日志功能較弱(只有簡單的 NoOpLog 和 SimpleLog),所以通常需要和其他具體的日志實現結合使用。JCL 適合項目開發過程中不能決定采用哪個具體日志實現的情況,因為 JCL 的特性保證了不用修改代碼即可以完成底層日志實現的更換。但實際開發中,需要更換底層日志實現的情況較少,且采用 JCL 所引入的開發成本并未產生新的日志特性,因此選用 JCL 之前建議仔細評估。

3) Java Logging APIs 具有和 Apache Log4j 類似的功能,但不及后者成熟,日志特性也沒有后者豐富,所以,應用場景也不如后者廣泛。

4) Apache Excalibur LogKit 與另外幾種日志實現的最大區別在于其可以輸出多項日志信息,而不僅僅是輸出一行日志信息,從而便于將日志輸出直接插入到數據庫中。





watson Guo 注1:現在J2EE中更多的日志用法是使用JCL接口,連后使用log4j作為實現。這樣避免了log4j.properties在java程序中的指定,而只需要放到yrapp.war/web-info/classes/下。 你可以發現在appfuse,springside,還有其他開源的j2ee項目中,幾乎都是這么做的。。



watson Guo 注2:log4j問題:當war跑在jboss,weblogic,websphere里面時,應用服務器的log4j.xml會覆蓋應用的日志配置。
此時要想war的日志配置起作用,有2各辦法: 
      (1)。修改jboss/conf/log4j.xml使之符合自己的要求。(2)直接在應用classpath/下建立jboss-web.xml 和 log4j.xml具體可網上查。
    惡性的是在windows下面RollFileAppender是有問題的,日志的文件編號出問題。估計是和緩存大小有關系,但是不影響使用。 。
。在linux/unxi下沒問題。



//////////////////////////////////////////////////////////



日志的配置 
設置日志時使用的格式保留符號有:c,C,d,F,l,L,m,M,n,p,r,t,x,X,% 等等 
C: 輸出觸發日志事件的文件的類名 輸出形如:包名.類名 
c: 輸出觸發日志事件的文件的文件名     輸出形如: 文件名 
d: 觸發日志事件的日期 
F: 觸發日志的文件名 
l: 觸發日志事件的文件及行數信息  輸出形如:包名.類名.方法名(文件名 行數) 
L: 觸發日志事件的文件行數 
m: 輸出系統設定的日志信息 
M: 輸出觸發日志事件的方法名 
n: 日志輸出時換行     使用形如:"\n"or"\r\n 
p: 日志事件的優先級別 
r: 系統運行到觸發日志事件之間的時間消耗(毫秒) 
t: 觸發日志事件的線程 
x: 輸出觸發日志事件的線程的NDC (nested diagnostic context):線程互斥時用 
X: 輸出觸發日志事件的線程的MDC (mapped diagnostic context)使用形如: 
%X{clientNum}clientNum 為mapKey 
%: 格式字符的確認校驗符號     在每個格式符號前使用 
輸出的列寬設定: 
格式修飾符  左調整  最小列寬  最大列寬                             說明 
  %20c             false           20            none             如果輸出少于20字符,左邊補空格 
  %-20c           true            20            none          如果輸出少于20字符,右邊補空格 
  %.30c           NA           none            30               如果輸出大于30從左開頭截去 
 %20.30c       false            20             30        輸出字符少于20,左補空格;多于30,左開頭截去 
%-20.30c       true            20              30               輸出字符少于20,右補空格;多于30,左開頭截去 
使用例子: 
-------------------------------------------------------------------------------------------------------- 
類名:"org.apache.xyz.SomeClass"  %C{1}     輸出 "SomeClass"   
%d{dd MMM yyyy HH:mm:ss,SSS} 
(格式未指定時使用 ISO8601格式標準"YYYY-mm-dd HH:mm:ss,SSS" ) -------------------------------------------------------------------------------------------------------- 
[%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n 
[DEBUG] 2002-11-12 12:00:57,376   method:log.Untitled1.main(Untitled1.java:38) 
tryOutput  
-------------------------------------------------------------------------------------------------------- 
 [%d{HH:mm:ss}] %p (%c %L) %x - %m%n 
[11:36:11] INFO (try.java 22)  - hello 
-------------------------------------------------------------------------------------------------------- 
  [%d] %p (%c %l) %x - %m%n 
[2003-08-29 11:37:05,662] INFO (try.java log.Untitled1.main(Untitled1.java:22))  
-         hello 
-------------------------------------------------------------------------------------------------------- 
  {%d}%p (%C %n %l) %x - %m    %M%n 
{2003-08-29 11:40:29,585} INFO (log.Untitled1 
log.Untitled1.main(Untitled1.java:38) )  - tryOutput    main 
 
    注: 
       1.格式保留符號使用時,每個前面都要加%號,兩個%號則輸出一個% 
    2.格式設定時,若使用到非保留符號或保留符號前未加%,則視為一般子符(串)輸出,包括空格,空行 
    3.使用保留符號中的大寫符號時,需考慮時間影響.
日志的級別:
    常用的日志級別包括:
     debug:最常使用的日志級別.
     info:一些重要信息的提示級別.
     error:重大錯誤級別.
     fatal:致命錯誤級別
     all:所有的日志都顯示級別.
     warn:警告錯誤級別.   
    off:所有日志都不顯示級別. 

設置日志時使用的格式保留符號有:c,C,d,F,l,L,m,M,n,p,r,t,x,X,% 等等
C: 輸出觸發日志事件的文件的類名 輸出形如:包名.類名
c: 輸出觸發日志事件的文件的文件名     輸出形如: 文件名 
d: 觸發日志事件的日期
F: 觸發日志的文件名
l: 觸發日志事件的文件及行數信息  輸出形如:包名.類名.方法名(文件名 行數)
L: 觸發日志事件的文件行數
m: 輸出系統設定的日志信息
M: 輸出觸發日志事件的方法名
n: 日志輸出時換行     使用形如:"\n"or"\r\n
p: 日志事件的優先級別 
r: 系統運行到觸發日志事件之間的時間消耗(毫秒)
t: 觸發日志事件的線程
x: 輸出觸發日志事件的線程的NDC (nested diagnostic context):線程互斥時用
X: 輸出觸發日志事件的線程的MDC (mapped diagnostic context)使用形如: 
%X{clientNum}clientNum 為mapKey 
%: 格式字符的確認校驗符號     在每個格式符號前使用
輸出的列寬設定:
格式修飾符  左調整  最小列寬  最大列寬               說明
  %20c      false    20        none    如果輸出少于20字符,左邊補空格
  %-20c     true     20        none    如果輸出少于20字符,右邊補空格
  %.30c     NA      none      30    如果輸出大于30從左開頭截去
 %20.30c  false  20        30輸出字符少于20,左補空格;多于30,左開頭截去
%-20.30c   true    20     30  輸出字符少于20,右補空格;多于30,左開頭截去
使用例子:
--------------------------------------------------------------------------------------------------------
類名:"org.apache.xyz.SomeClass"  %C{1}     輸出 "SomeClass"   
%d{dd MMM yyyy HH:mm:ss,SSS}
(格式未指定時使用 ISO8601格式標準"YYYY-mm-dd HH:mm:ss,SSS" ) --------------------------------------------------------------------------------------------------------
[%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n 
[DEBUG] 2002-11-12 12:00:57,376   method:log.Untitled1.main(Untitled1.java:38)
tryOutput  
--------------------------------------------------------------------------------------------------------
 [%d{HH:mm:ss}] %p (%c %L) %x - %m%n
[11:36:11] INFO (try.java 22)  - hello
--------------------------------------------------------------------------------------------------------
  [%d] %p (%c %l) %x - %m%n
[2003-08-29 11:37:05,662] INFO (try.java log.Untitled1.main(Untitled1.java:22))  
-	hello
--------------------------------------------------------------------------------------------------------
  {%d}%p (%C %n %l) %x - %m    %M%n 
{2003-08-29 11:40:29,585} INFO (log.Untitled1 
log.Untitled1.main(Untitled1.java:38) )  - tryOutput    main 

注:1.格式保留符號使用時,每個前面都要加%號,兩個%號則輸出一個%
2.格式設定時,若使用到非保留符號或保留符號前未加%,則視為一般子符(串)輸出,包括空格,空行
3.使用保留符號中的大寫符號時,需考慮時間影響.





//////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////




在應用程序中添加日志記錄總的來說基于三個目的:監視代碼中變量的變化情況,周期性的記錄到文件中供其他應用進行統計分析工作;跟蹤代碼運行時軌跡,作為日后審計的依據;擔當集成開發環境中的調試器的作用,向文件或控制臺打印代碼的調試信息。

最普通的做法就是在代碼中嵌入許多的打印語句,這些打印語句可以輸出到控制臺或文件中,比較好的做法就是構造一個日志操作類來封裝此類操作,而不是讓一系列的打印語句充斥了代碼的主體。

1.2. Log4j簡介


在強調可重用組件開發的今天,除了自己從頭到尾開發一個可重用的日志操作類外,Apache為我們提供了一個強有力的日志操作包-Log4j。

Log4j是Apache的一個開放源代碼項目,通過使用Log4j,我們可以控制日志信息輸送的目的地是控制臺、文件、GUI組件、甚至是套接口服務器、NT的事件記錄器、UNIX Syslog守護進程等;我們也可以控制每一條日志的輸出格式;通過定義每一條日志信息的級別,我們能夠更加細致地控制日志的生成過程。最令人感興趣的就是,這些可以通過一個配置文件來靈活地進行配置,而不需要修改應用的代碼。

此外,通過Log4j其他語言接口,您可以在C、C++、.Net、PL/SQL程序中使用Log4j,其語法和用法與在Java程序中一樣,使得多語言分布式系統得到一個統一一致的日志組件模塊。而且,通過使用各種第三方擴展,您可以很方便地將Log4j集成到J2EE、JINI甚至是SNMP應用中。

本文介紹的Log4j版本是1.2.3。作者試圖通過一個簡單的客戶/服務器Java程序例子對比使用與不使用Log4j 1.2.3的差別,并詳細講解了在實踐中最常使用Log4j的方法和步驟。在強調可重用組件開發的今天,相信Log4j將會給廣大的設計開發人員帶來方便。加入到Log4j的隊伍來吧!

一個簡單的例子


我們先來看一個簡單的例子,它是一個用Java實現的客戶/服務器網絡程序。剛開始我們不使用Log4j,而是使用了一系列的打印語句,然后我們將使用Log4j來實現它的日志功能。這樣,大家就可以清楚地比較出前后兩個代碼的差別。

2.1. 不使用Log4j


2.1.1. 客戶程序 


package log4j ;

import java.io.* ;
import java.net.* ;

/**
 *
 * <p> Client Without Log4j </p>
 * <p> Description: a sample with log4j</p>
 * @version 1.0
 */
public class ClientWithoutLog4j {

    /**
     *
     * @param args
     */
    public static void main ( String args [] ) {

        String welcome = null;
        String response = null;
        BufferedReader reader = null;
        PrintWriter writer = null;
        InputStream in = null;
        OutputStream out = null;
        Socket client = null;

        try {
            client = new Socket ( "localhost", 8001 ) ;
            System.out.println ( "info: Client socket: " + client ) ;
            in = client.getInputStream () ;
            out = client.getOutputStream () ;
        } catch ( IOException e ) {
            System.out.println ( "error: IOException : " + e ) ;
            System.exit ( 0 ) ;
        }

        try{
            reader = new BufferedReader( new InputStreamReader ( in ) ) ;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91亚洲精华国产精华精华液| 日韩高清国产一区在线| 国产又粗又猛又爽又黄91精品| 欧美亚洲丝袜传媒另类| 日韩欧美国产三级| 蜜臀av性久久久久蜜臀aⅴ流畅| 欧美在线播放高清精品| 一区二区三区蜜桃网| 91黄色免费看| 亚洲午夜激情网站| 欧美剧在线免费观看网站| 国产精品国产成人国产三级| 国产成人亚洲综合a∨猫咪| 中文字幕第一区二区| 粉嫩一区二区三区在线看| 中文在线一区二区| www..com久久爱| 国产日韩av一区| 国产一区不卡在线| 国产精品乱码一区二三区小蝌蚪| 99久久伊人精品| 一区av在线播放| 欧美乱妇20p| 极品少妇xxxx偷拍精品少妇| 精品日韩在线一区| 国产.欧美.日韩| 亚洲桃色在线一区| 色视频一区二区| 午夜视频在线观看一区二区| 91精品国产91久久久久久最新毛片| 日韩成人一区二区三区在线观看| 精品久久久久久久人人人人传媒| 国产98色在线|日韩| 亚洲人成网站在线| 色激情天天射综合网| 日本美女一区二区| 国产欧美一区二区在线| 色丁香久综合在线久综合在线观看| 亚洲www啪成人一区二区麻豆| 欧美一级片在线观看| 国产成人精品一区二| 亚洲欧美日韩在线| 欧美视频一区在线| 欧美精选在线播放| 国内精品伊人久久久久av影院 | 亚洲福利视频导航| 日韩欧美亚洲一区二区| 波多野结衣91| 老司机精品视频导航| 亚洲欧美日韩一区| 久久只精品国产| 色婷婷精品大在线视频| 婷婷中文字幕综合| 国产精品理论在线观看| 91精品婷婷国产综合久久竹菊| 国产成人aaaa| 免费观看在线色综合| 亚洲女同一区二区| 国产欧美日韩在线| 日韩精品一区二区三区视频 | 亚洲免费观看高清完整版在线观看 | 国产一区欧美日韩| 亚洲国产欧美一区二区三区丁香婷| www国产精品av| 欧美日韩一区二区三区免费看| 久久精品国产99| 亚洲不卡av一区二区三区| 国产精品人成在线观看免费 | 91在线观看成人| 国产一区二区三区综合| 日韩二区三区四区| 国产日产欧美一区二区三区| 欧美色电影在线| 色屁屁一区二区| 成人免费观看视频| 国产成人亚洲综合a∨猫咪| 男人操女人的视频在线观看欧美| 亚洲男人的天堂在线aⅴ视频| 精品对白一区国产伦| 欧美片网站yy| 欧美人妖巨大在线| 欧美日韩一区二区三区视频| 91日韩精品一区| av激情亚洲男人天堂| 日本美女一区二区三区视频| 亚洲欧美日韩精品久久久久| 国产精品麻豆一区二区| 国产精品三级av在线播放| 国产日韩欧美精品一区| 久久亚洲精精品中文字幕早川悠里| 日韩欧美电影一二三| 欧美性三三影院| 波多野结衣亚洲| 99久久精品国产导航| 99热精品一区二区| 99这里只有久久精品视频| www.日韩大片| 久久精品一区蜜桃臀影院| 欧美一区二区三区视频| 91麻豆精品91久久久久同性| 777午夜精品免费视频| 欧美另类变人与禽xxxxx| 91麻豆精品国产91久久久久久久久 | 欧美精品在线观看一区二区| 欧美日韩国产欧美日美国产精品| 欧洲视频一区二区| 欧美猛男男办公室激情| 7777精品伊人久久久大香线蕉完整版 | 欧美日免费三级在线| 91精品国产aⅴ一区二区| 国产欧美一区二区精品性| 亚洲欧美精品午睡沙发| 开心九九激情九九欧美日韩精美视频电影| 国产一区二区三区久久悠悠色av| 91色在线porny| 91精品在线麻豆| 欧美激情在线观看视频免费| 亚洲综合在线电影| 国产制服丝袜一区| 精品视频一区三区九区| 国产日韩高清在线| 午夜在线成人av| av在线播放一区二区三区| 日韩欧美色综合网站| 亚洲欧美一区二区三区国产精品| 日本亚洲天堂网| 97久久精品人人爽人人爽蜜臀| 欧美一二三区在线观看| 亚洲欧美日韩精品久久久久| 精品一区二区在线免费观看| 91福利在线免费观看| 国产欧美一区在线| 精品在线免费观看| 欧美日本一区二区三区四区 | 国产精品久久久久一区| 日韩av电影天堂| 色偷偷一区二区三区| 久久久久九九视频| 日韩和欧美一区二区| 日本国产一区二区| 中文字幕中文字幕一区二区| 国产精品一品二品| 精品国产一区二区三区不卡| 午夜久久久影院| 91福利国产成人精品照片| 中文字幕欧美区| 国内精品在线播放| 日韩免费福利电影在线观看| 天堂成人国产精品一区| 欧美亚洲动漫制服丝袜| 亚洲激情图片一区| 91亚洲大成网污www| 国产精品久99| 不卡的av电影| 国产精品福利电影一区二区三区四区| 欧美一级专区免费大片| 亚州成人在线电影| 欧美视频精品在线观看| 一区二区三区在线影院| 91香蕉国产在线观看软件| 亚洲三级在线看| 91麻豆视频网站| 亚洲精品欧美专区| 色综合天天综合网天天狠天天| 国产精品视频在线看| 国产aⅴ综合色| 欧美激情中文字幕| 国产91精品精华液一区二区三区| 久久九九99视频| 成人福利在线看| 综合久久一区二区三区| 99久久精品一区二区| 日韩美女视频19| 日本国产一区二区| 午夜精品一区二区三区免费视频| 欧美日韩在线三级| 另类的小说在线视频另类成人小视频在线| 欧美一区二区啪啪| 久久99国产乱子伦精品免费| 久久久久88色偷偷免费| 99久久综合99久久综合网站| 亚洲欧美日韩国产一区二区三区 | 丁香亚洲综合激情啪啪综合| 中文字幕国产一区| 91豆麻精品91久久久久久| 日日夜夜免费精品| 久久精品夜色噜噜亚洲aⅴ| 高清国产午夜精品久久久久久| 成人欧美一区二区三区白人| 91久久香蕉国产日韩欧美9色| 午夜精品123| 久久一留热品黄| 色综合久久综合中文综合网| 日韩成人午夜精品| 欧美国产一区在线| 欧美日韩国产综合一区二区 | 免费在线成人网| 欧美激情艳妇裸体舞| 欧美天堂一区二区三区| 精品影视av免费|