色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術(shù)文章
文章詳情頁

詳解記錄Java Log的幾種方式

瀏覽:82日期:2022-08-11 10:55:53
目錄一、System.out.println(最簡單)二、java.util.logging(相對簡單)三、log4j(最強大)四、commons-logging(全稱:Jakarta Commons Logging五、slf4j(全稱:Simple Logging Facade for Java,簡單日志門面

在Java中記錄日志的方式有如下幾種:

一、System.out.println(最簡單)

1、輸出到控制臺:System.out.println('XXX');2、輸出到指定文件:

import java.io.PrintStream; PrintStream ps = new PrintStream('D:test.txt');System.setOut(ps);System.out.println('XXX');二、java.util.logging(相對簡單)

JDK自帶的logging.jar中的方法。通過位于JDK安裝路徑下的jre/lib/logging.properties文件進(jìn)行配置。

1、默認(rèn)配置如下:

handlers= java.util.logging.ConsoleHandler .level= INFO # default file output is in user’s home directory.java.util.logging.FileHandler.pattern = %h/java%u.logjava.util.logging.FileHandler.limit = 50000java.util.logging.FileHandler.count = 1java.util.logging.FileHandler.formatter = java.util.logging.XMLFormatter # Limit the message that are printed on the console to INFO and above.java.util.logging.ConsoleHandler.level = INFOjava.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter

默認(rèn)是輸出到控制臺,如果既想在控制臺,又想在文件中,要修改如下配置:

handlers= java.util.logging.FileHandler, java.util.logging.ConsoleHandler

Logger的級別按降序排序如下:

SEVERE(最高值) WARNING INFO CONFIG FINE FINER FINEST(最低值)

默認(rèn)所有l(wèi)og的輸出級別是INFO(.level= INFO),比INFO更低的日志不會顯示。控制臺的Log輸出級別可以特殊控制,默認(rèn)也是INFO,可以修改如下配置:

java.util.logging.ConsoleHandler.level = INFO

2、實例

(1)輸出到控制臺:

Logger log = Logger.getLogger('testLog'); log.setLevel(Level.WARNING);log.warning('xxxx testLog warning');

輸出結(jié)果:

詳解記錄Java Log的幾種方式

(2)輸出到文件:

FileHandler fileHandler;//文件控制器try { fileHandler = new FileHandler('D:temptext.log');fileHandler.setLevel(Level.INFO);fileHandler.setFormatter(new Formatter() {//定義一個匿名類 //Formatter 接受 LogRecord,并將它轉(zhuǎn)換為一個字符串。 @Override public String format(LogRecord record) { Date date = new Date(); String sDate = date.toString(); return '[' + sDate + ']' + '[' + record.getLevel() + ']' + ':' + record.getMessage() + 'n'; } }); Logger log = Logger.getLogger('testLog');log.addHandler(fileHandler); log.info('aaa'); } catch (SecurityException e) { e.printStackTrace();} catch (IOException e) { e.printStackTrace();}

默認(rèn)狀況下, 日志會打印到控制臺。添加 filehandler 后, 會同時寫入文件。輸出結(jié)果:

詳解記錄Java Log的幾種方式詳解記錄Java Log的幾種方式

三、log4j(最強大)

可以通過配置 .properties 或是 .xml 的文件, 配置日志的目的地,格式等等。具體配置不在此處詳述。

1、Log4J的輸出級別按降序排序如下:

OFF 最高等級,關(guān)閉日志 FATAL 可能導(dǎo)致應(yīng)用中止的嚴(yán)重事件錯誤 ERROR 嚴(yán)重錯誤,主要是程序錯誤 WARN 一般警告 INFO 一般顯示信息 DEBUG 調(diào)試信息 TRACE比DEBUG更細(xì)粒度的事件信息 ALL 最低等級

2、實例

import org.apache.log4j.Logger;public class Log4jTest { private static Logger log = Logger.getLogger(Log4jTest.class); public void log() {log.info('hello this is log4j info log'); } public static void main(String[] args) {Log4jTest test = new Log4jTest();test.log(); }}

除了上述幾種,還存在logback等其他的日志框架,對于開發(fā)者而言,每種日志都有不同的寫法。如果以實際的日志框架來進(jìn)行編寫,之后更換日志系統(tǒng)就很麻煩。

由此誕生了以下的門面類日志框架(它們都不是日志的最終實現(xiàn),只是一套規(guī)范),將系統(tǒng)和具體的日志實現(xiàn)框架解耦合。

詳解記錄Java Log的幾種方式

四、commons-logging(全稱:Jakarta Commons Logging

commons-logging是為那些需要建立在不同環(huán)境下使用不同日志架構(gòu)的組件或庫的開發(fā)者創(chuàng)建的,由commons-logging在運行時決定使用哪種日志架構(gòu)。

默認(rèn)的LogFactory是按照下列的步驟去發(fā)現(xiàn)并決定那個日志工具將被使用的(按照順序,尋找過程會在找到第一個工具時中止):

首先在classpath下尋找自己的配置文件commons-logging.properties,使用其中定義的Log實現(xiàn)類; 找不到commons-logging.properties文件,則在查找是否已定義系統(tǒng)環(huán)境變量org.apache.commons.logging.Log,使用其定義的Log實現(xiàn)類; 否則,查看classpath中是否有Log4j的包,有則自動使用Log4j作為日志實現(xiàn)類; 否則,使用JDK自身的日志實現(xiàn)類(JDK1.4以后才有日志實現(xiàn)類); 否則,使用commons-logging自己提供的一個簡單的日志實現(xiàn)類SimpleLog;

在common-logging.properties文件中設(shè)置實現(xiàn)Log接口的類:

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

commons-logging結(jié)合Log4J的實例

import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory; public class JCLTest { private static Log log = LogFactory.getLog(JCLTest.class); public void log() { log.info('hello this is JCL info log'); } public static void main(String[] args) { JCLTest test = new JCLTest(); test.log(); }}五、slf4j(全稱:Simple Logging Facade for Java,簡單日志門面

SLF4j+Log4j 與 JCL+Log4J 的使用方式差不多,主要差異就在 SLF4J 用 jar 來告知用哪種日志實現(xiàn),而 JCL 是通過配置文件來獲得該選擇哪個日志實現(xiàn)。

實例

import org.slf4j.Logger;import org.slf4j.LoggerFactory;public class Test { private static final Logger log = LoggerFactory.getLogger(Test.class); public void test() {log.info('hello this is {} info log', 'SLF4J'); }}

到此這篇關(guān)于詳解記錄Java Log的幾種方式的文章就介紹到這了,更多相關(guān)Java Log內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 欧美一级毛片高清免费观看 | 一区二区不卡久久精品 | 美女在线网站免费的 | 久久两性视频 | 亚洲精品天堂一区在线观看 | 香蕉99国内自产自拍视频 | 亚洲第一免费播放区 | 99国产在线播放 | 国产成人经典三级在线观看 | 国产精品美女免费视频大全 | 成人a视频在线观看 | 一区二区三区视频免费观看 | 欧美视频 亚洲视频 | 久久狠狠 | 性福利视频 | 日韩精品一区二区三区 在线观看 | 欧美色欧美色 | 亚洲一区二区精品 | 亚洲美女在线观看 | 国产香蕉尹人综合在线观 | 免费在线观看的毛片 | 在线中文字幕精品第5页 | 欧美日韩国产一区三区 | 成人观看的视频三级 | 久久国产精品1区2区3区网页 | 国产v片在线播放免费观 | 国产精品美女免费视频大全 | 京东一热本色道久久爱 | 国产成人精品微拍视频 | 毛片的网址| 91久久香蕉青青草原娱乐 | 亲子乱子伦xxxx | 国内久久精品视频 | 日本视频播放免费线上观看 | 一级a毛片 | 久久福利资源网站免费看 | 国内精品自产拍在线观看91 | 操操操网| 免费一级欧美片在线观免看 | 91国偷自产一区二区三区 | 亚洲男人天堂久久 |