小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Java中打印日志的幾種方式

 觀審美2 2023-09-26 發(fā)布于北京
前言

在Java 中實現(xiàn)記錄日志的方式有很多種,
1. 最簡單的方式,就是system.println.out(error) ,這樣直接在控制臺打印消息了。
2. Java.util.logging ; 在JDK 1.4 版本之后,提供了日志的API ,可以往文件中寫日志了。
3. log4j , 最強大的記錄日志的方式。 可以通過配置 .properties 或是 .xml 的文件, 配置日志的目的地,格式等等。
4. commons-logging, 最綜合和常見的日志記錄方式, 經(jīng)常是和log4j 結合起來使用。

Java.util.logging –JDK 記錄日志方式

system.print 這就不用多說了,直接看一下Java api 中 logging 日志的使用例子:

import java.io.IOException;  
import java.util.Date;  
import java.util.logging.FileHandler;  
import java.util.logging.Formatter;  
import java.util.logging.Level;  
import java.util.logging.LogRecord;  
import java.util.logging.Logger;  

public class TestLogJava {  

    public static void main(String[] args) throws IOException{  
        Logger log = Logger.getLogger("tesglog");  
        log.setLevel(Level.ALL);  
        FileHandler fileHandler = new FileHandler("testlog.log");  
        fileHandler.setLevel(Level.ALL);  
        fileHandler.setFormatter(new LogFormatter());  
        log.addHandler(fileHandler);  
        log.info("This is test java util log");     
    }  
}  

class LogFormatter extends Formatter {  
    @Override  
    public String format(LogRecord record) {  
        Date date = new Date();  
        String sDate = date.toString();  
        return "[" + sDate + "]" + "[" + record.getLevel() + "]"  
                + record.getClass() + record.getMessage() + "\n";  
    }  
}  

這里是在eclipse 下code 和測試的。
首先定義一個Logeer的實例,并設置log 的級別,接著添加一個fileHander ,就是把日志寫到文件中。在寫入文件的時候,定義一個 LogFormatter對日志進行格式的渲染。
默認狀況下, 日志會打印到控制臺。添加filehandler 后, 會同時寫入文件。 如不指定路徑,日志文件將位于項目根路徑下。

log4j 記錄日志方式

log4j 是apache 提供的記錄日志的jar 檔。
下載路徑:
http://logging./log4j/1.2/download.html
這里要做的事情稍微要多一些:
1. 下載log4j 的jar 包,放入項目的lib 包中(添加到項目的build path中)。
2. 配置log4j.properties, 并放入項目的根路徑下.(也可以放入其他路徑,在讀的時候需要指定)

看一下一個配置實例:

### 設置日志級別 ###
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 = [ %p ] - [ %l ] %m%n

### 輸出到日志文件 ###
log4j.appender.logfile = org.apache.log4j.RollingFileAppender  
log4j.appender.logfile.File = log4j.log  
log4j.appender.logfile.MaxFileSize = 512KB  
log4j.appender.logfile.MaxBackupIndex = 3  
log4j.appender.logfile.layout = org.apache.log4j.PatternLayout  
log4j.appender.logfile.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss} [ %p ] - [ %l ] %m%n

這里指定了日志輸出的級別 debug.
stdout, logfile 指定日志輸出的目的地。 這兩個名字可以隨便取,比如 A, 或B都可以。 實際的配置是 org.apache.log4j.ConsoleAppender 和RollingFileAppender 用于指定是控制臺還是文件。
另外還指定了輸出的格式, 已經(jīng)產(chǎn)生的file 的規(guī)則。

3.測試java 文件

import org.apache.log4j.Logger;  
import org.apache.log4j.PropertyConfigurator;  

public class TestLog4j {  

    public static void main(String[] args) {  
        // 1. create log  
        Logger log = Logger.getLogger(TestLog4j.class);  
        // 2. get log config file  
        PropertyConfigurator.configure("log4j.properties");  
        // 3. start log  
        log.debug("Here is some DEBUG");  
        log.info("Here is some INFO");  
        log.warn("Here is some WARN");  
        log.error("Here is some ERROR");  
        log.fatal("Here is some FATAL");  
    }  
}  

配置稍顯麻煩,但是code 時就簡單多了。

commons-logging寫日志方式

Commons-logging 也是Apache 提供的日志jar 檔。
下載地址:http://commons./proper/commons-logging/download_logging.cgi
你有可能要問為什么有了log4j還有提供Commons-logging呢? 這兩者有什么區(qū)別嗎?
其實從Commons-logging這個名字就可以看出來, 這應該是一個日志的共用接口。實際上, 它的確是這樣一個作用,
使用Commons-logging的LogFactory獲取日志處理類時:
1) 首先在classpath下尋找自己的配置文件commons-logging.properties,如果找到,則使用其中定義的Log實現(xiàn)類;
2) 如果找不到commons-logging.properties文件,則在查找是否已定義系統(tǒng)環(huán)境變量org.apache.commons.logging.Log,找到則使用其定義的Log實現(xiàn)類;
如果在Tomact中可以建立一個叫 CATALINA_OPTS 的環(huán)境變量,給他的值:
Dorg.apache.commons.logging.Log = org.apache.commons.logging.impl.SimpleLog
Dorg.apache.commons.logging.simplelog.defaultlog = warn
3) 否則,查看classpath中是否有Log4j的包,如果發(fā)現(xiàn),則自動使用Log4j作為日志實現(xiàn)類;
4) 否則,使用JDK自身的日志實現(xiàn)類(JDK1.4以后才有日志實現(xiàn)類);
5) 否則,使用commons-logging自己提供的一個簡單的日志實現(xiàn)類SimpleLog;

先使用第一種方式來看一個實例,配置commons-logging.properties, 使用log4j來記錄日志。
注意, commons-logging 要配合log4j 記錄日志,必須把log4j的jar 包也導入到項目中。
1. 導入log4j 和commons-logging的jar 包
2. 配置commons-logging.properties 和 log4j.properties, 放入項目的classpath下(也就是src目錄下)
注意: 單獨使用log4j 的時候,log4j.properties 默認是放在項目的根目錄下。
log4j.properties 的內(nèi)容和上面完全相同。

看一下commons-logging.properties 的配置,一句話,指定使用log4j

org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger  

3.測試代碼:

import org.apache.commons.logging.Log;  
import org.apache.commons.logging.LogFactory;  

public class TestLogCom {  

    static Log log = LogFactory.getLog(TestLog.class);  
    public static void main(String[] args) {  

        log.debug("Here is some DEBUG");  
        log.info("Here is some INFO");  
        log.warn("Here is some WARN");  
        log.error("Here is some ERROR");  
        log.fatal("Here is some FATAL");  
    }  

}  

除了使用log4j 之外, 還可以配置
org.apache.commons.logging.impl.Jdk14Logger 使用JDK1.4。
org.apache.commons.logging.impl.Log4JLogger 使用Log4J。
org.apache.commons.logging.impl.LogKitLogger 使用 avalon-Logkit。
org.apache.commons.logging.impl.SimpleLog common-logging自帶日志實現(xiàn)類。它實現(xiàn)了Log接口,把日志消息都輸出到系統(tǒng)錯誤流System.err 中。
org.apache.commons.logging.impl.NoOpLog common-logging自帶日志實現(xiàn)類。它實現(xiàn)了Log接口。 其輸出日志的方法中不進行任何操作。

總結

以上有一條
3) 否則,查看classpath中是否有Log4j的包,如果發(fā)現(xiàn),則自動使用Log4j作為日志實現(xiàn)類;
項目同時導入log4j 和commons-logging的jar 包, 不需要配置commons-logging.properties ,只需要在classpath中配置 log4j.properties就可以使用log4j的方式記錄日志。這也是目前用的比較多的記錄日志的方式。

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多