您好,登錄后才能下訂單哦!
這期內(nèi)容當中小編將會給大家?guī)碛嘘P(guān)怎么在Java中記錄Log,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
1、輸出到控制臺:System.out.println("XXX");
2、輸出到指定文件:
import java.io.PrintStream; PrintStream ps = new PrintStream("D:\\test.txt"); System.setOut(ps); System.out.println("XXX");
JDK自帶的logging.jar中的方法。通過位于JDK安裝路徑下的jre/lib/logging.properties文件進行配置。
1、默認配置如下:
handlers= java.util.logging.ConsoleHandler .level= INFO # default file output is in user's home directory. java.util.logging.FileHandler.pattern = %h/java%u.log java.util.logging.FileHandler.limit = 50000 java.util.logging.FileHandler.count = 1 java.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 = INFO java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
默認是輸出到控制臺,如果既想在控制臺,又想在文件中,要修改如下配置:
handlers= java.util.logging.FileHandler, java.util.logging.ConsoleHandler
Logger的級別按降序排序如下:
SEVERE(最高值)
WARNING
INFO
CONFIG
FINE
FINER
FINEST(最低值)
默認所有l(wèi)og的輸出級別是INFO(.level= INFO),比INFO更低的日志不會顯示。
控制臺的Log輸出級別可以特殊控制,默認也是INFO,可以修改如下配置:
java.util.logging.ConsoleHandler.level = INFO
2、實例
(1)輸出到控制臺:
Logger log = Logger.getLogger("testLog"); log.setLevel(Level.WARNING); log.warning("xxxx testLog warning");
輸出結(jié)果:
(2)輸出到文件:
FileHandler fileHandler;//文件控制器 try { fileHandler = new FileHandler("D:\\temp\\text.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(); }
默認狀況下, 日志會打印到控制臺。添加 filehandler 后, 會同時寫入文件。輸出結(jié)果:
可以通過配置 .properties 或是 .xml 的文件, 配置日志的目的地,格式等等。具體配置不在此處詳述。
1、Log4J的輸出級別按降序排序如下:
OFF 最高等級,關(guān)閉日志
FATAL 可能導致應用中止的嚴重事件錯誤
ERROR 嚴重錯誤,主要是程序錯誤
WARN 一般警告
INFO 一般顯示信息
DEBUG 調(diào)試信息
TRACE 比DEBUG更細粒度的事件信息
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ā)者而言,每種日志都有不同的寫法。如果以實際的日志框架來進行編寫,之后更換日志系統(tǒng)就很麻煩。
由此誕生了以下的門面類日志框架(它們都不是日志的最終實現(xiàn),只是一套規(guī)范),將系統(tǒng)和具體的日志實現(xiàn)框架解耦合。
commons-logging是為那些需要建立在不同環(huán)境下使用不同日志架構(gòu)的組件或庫的開發(fā)者創(chuàng)建的,由commons-logging在運行時決定使用哪種日志架構(gòu)。
默認的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+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"); } }
上述就是小編為大家分享的怎么在Java中記錄Log了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。