Java Logger使用
接下來我們介紹的:java.util.logging.Logger是在JDK 1.4 版本之後加入的,提供了日誌記錄的API ,可以往控制檯/檔案中寫日誌了。
我們可以使用全域性日誌記錄器來生成簡單的日誌記錄Logger.getGlobal().info("log test");輸出: 查詢或建立一個 logger:
public static Logger getLogger(String name)name是Logger的名稱,當我們以此名稱建立過則返回原來建立的那一個,否則建立新的。
所以
Logger logger1 = Logger.getLogger("com.xiya.test.LogDemo"); Logger logger2 = Logger.getLogger("com.xiya.test.LogDemo"); System.out.println(logger1 == logger2);
返回true。
Logger的級別:
SEVERE | 嚴重 |
WARNING | 警告 |
INFO | 資訊 |
CONFIG | 配置 |
FINE | 良好 |
FINER | 較好 |
FINEST | 最好 |
ALL | 開啟所有級別日誌記錄 |
OFF | 關閉所有級別日誌記錄 |
Logger的預設級別定義是在jre安裝目錄的lib下面的logging.properties。
java.util.logging.ConsoleHandler.level = INFO
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
Logger logger = Logger.getLogger("com.xiya.test.LogDemo"); logger.setLevel(Level.ALL); ConsoleHandler consoleHandler = new ConsoleHandler(); consoleHandler.setLevel(Level.FINEST); logger.addHandler(consoleHandler); logger.severe("嚴重"); logger.warning("警告"); logger.info("資訊"); logger.config("配置"); logger.fine("良好"); logger.finer("較好"); logger.finest("最好");
四月 24, 2017 4:53:16 下午 com.xiya.test.LogDemo main
嚴重: 嚴重
四月 24, 2017 4:53:16 下午 com.xiya.test.LogDemo main
嚴重: 嚴重
四月 24, 2017 4:53:16 下午 com.xiya.test.LogDemo main
警告: 警告
四月 24, 2017 4:53:16 下午 com.xiya.test.LogDemo main
警告: 警告
四月 24, 2017 4:53:16 下午 com.xiya.test.LogDemo main
資訊: 資訊
四月 24, 2017 4:53:16 下午 com.xiya.test.LogDemo main
資訊: 資訊
四月 24, 2017 4:53:16 下午 com.xiya.test.LogDemo main
配置: 配置
四月 24, 2017 4:53:16 下午 com.xiya.test.LogDemo main
詳細: 良好
四月 24, 2017 4:53:16 下午 com.xiya.test.LogDemo main
較詳細: 較好
四月 24, 2017 4:53:16 下午 com.xiya.test.LogDemo main
非常詳細: 最好
如上設定,我們可以顯示所有級別的日誌記錄。我們看到嚴重、警告、資訊都顯示兩次,這是由於logging.properties的原因。
簡單的說:該檔案定義了Logger預設的輸出媒介控制器(Handler):java.util.logging.ConsolerHandler,也就是將資訊輸出至控制檯。
我們也可以自定義logging.properties
測試:
import java.util.logging.*;
public class TestLogger {
public static void main(String[] args) {
Logger log = Logger.getLogger("com");
log.setLevel(Level.WARNING);
Logger log2 = Logger.getLogger("com.xiya");
log2.info("111");
log2.severe("222");
log2.warning("333");
}
}
輸出:
四月 24, 2017 12:19:32 下午 TestLogger main
嚴重: 222
四月 24, 2017 12:19:32 下午 TestLogger main
警告: 333
Logger的Handler
java.util.logging.Handlerjava.util.logging.MemoryHandler
java.util.logging.StreamHandler
java.util.logging.ConsoleHandler
java.util.logging.FileHandler
java.util.logging.SocketHandler
Handler 物件從 Logger 中獲取日誌資訊,並將這些資訊匯出。例如,它可將這些資訊寫入控制檯或檔案中,也可以將這些資訊傳送到網路日誌服務中,或將其轉發到作業系統日誌中。
可通過執行 setLevel(Level.OFF) 來禁用 Handler,並可通過執行適當級別的 setLevel 來重新啟用。
Handler 類通常使用 LogManager 屬性來設定 Handler 的 Filter、Formatter 和 Level 的預設值。
import java.util.logging.*;
import java.io.IOException;
public class TestLogger {
public static void main(String[] args) throws IOException {
Logger log = Logger.getLogger("com");
log.setLevel(Level.INFO);
Logger log1 = Logger.getLogger("com.xiya");
ConsoleHandler consoleHandler =new ConsoleHandler();
consoleHandler.setLevel(Level.ALL);
log.addHandler(consoleHandler);
FileHandler fileHandler = new FileHandler("testlog.log");
fileHandler.setLevel(Level.INFO);
//fileHandler.setFormatter(new SimpleFormatter());
log.addHandler(fileHandler);
log.info("111");
log1.info("222");
log1.fine("333");
}
}
輸出:
四月 24, 2017 3:29:27 下午 TestLogger main
資訊: 111
四月 24, 2017 3:29:27 下午 TestLogger main
資訊: 111
四月 24, 2017 3:29:27 下午 TestLogger main
資訊: 222
四月 24, 2017 3:29:27 下午 TestLogger main
資訊: 222
testlog.log
<?xml version="1.0" encoding="GBK" standalone="no"?>
<!DOCTYPE log SYSTEM "logger.dtd">
<log>
<record>
<date>2017-04-24T15:30:23</date>
<millis>1493019023251</millis>
<sequence>0</sequence>
<logger>com</logger>
<level>INFO</level>
<class>TestLogger</class>
<method>main</method>
<thread>1</thread>
<message>111</message>
</record>
<record>
<date>2017-04-24T15:30:23</date>
<millis>1493019023297</millis>
<sequence>1</sequence>
<logger>com.xiya</logger>
<level>INFO</level>
<class>TestLogger</class>
<method>main</method>
<thread>1</thread>
<message>222</message>
</record>
</log>
可見,預設的日誌方式是xml格式,很爛。所以最好自定義下logger的格式。需要用Formatter來定義。Logger的Formatter
java.util.logging.Formatterjava.util.logging.SimpleFormatter
java.util.logging.XMLFormatter
Formatter 為格式化 LogRecords 提供支援。
一般來說,每個日誌記錄 Handler 都有關聯的 Formatter。Formatter 接受 LogRecord,並將它轉換為一個字串。
以上預設設定即為:fileHandler.setFormatter(new XMLFormatter());
fileHandler.setFormatter(new SimpleFormatter());對應於:
四月 24, 2017 3:34:08 下午 TestLogger main
資訊: 111
四月 24, 2017 3:34:08 下午 TestLogger main
資訊: 222
當然我們可以自定義Formatter
package com.xiya.test;
import java.io.IOException;
import java.util.Date;
import java.util.logging.*;
/**
* Created by N3verL4nd on 2017/4/24.
*/
class LoggerFormatter extends Formatter {
@Override
public String format(LogRecord record) {
return "[" + new Date() + "]" + " [" + record.getLevel() + "] "
+ record.getClass() + record.getMessage() + "\n";
}
}
public class LogDemo {
public static void main(String[] args) throws IOException {
Logger logger = Logger.getLogger("com.xiya.test.LogDemo");
logger.setLevel(Level.ALL);
ConsoleHandler consoleHandler = new ConsoleHandler();
logger.addHandler(consoleHandler);
FileHandler fileHandler = new FileHandler("testLog.log");
fileHandler.setFormatter(new LoggerFormatter());
logger.addHandler(fileHandler);
logger.info("hi");
}
}
參考:
http://mouselearnjava.iteye.com/blog/1926353
http://www.cnblogs.com/xingele0917/p/4120320.html
http://lavasoft.blog.51cto.com/62575/184492
相關推薦
Java Logger(java日誌)
目錄1. 簡介2. 安裝3. log4j基本概念3.1. Logger3.2. Appender3.2.1. 使用ConsoleAppender3.2.2. 使用FileAppender3.2.3. 使用WriterAppender3.3. Layout3.4. 基本示例3.4.1. SimpleLayout
Java Logger使用
在Java中實現日誌記錄的方式有很多種,其中最簡單的方式,就是System.out.print,System.err.print 這樣直接在控制檯列印訊息了。 接下來我們介紹的:java.util.l
java Logger 的使用與配置2
Java Logging API是sun公司於2002年5月正式釋出的。它是自J2SE 1.4版本開始提供的一個新的應用程式介面。它能夠很方便地控制和輸出日誌資訊到檔案,控制檯或其它使用者定義的地方,如資料庫,電子郵件等。所以它是為終端使用者,系統管理員,軟體服務工程師和開
java logger日誌設定儲存位置
設定儲存日誌的位置,以日期作為檔名: public static final Logger logger=Logger.getLogger(Main.class.toString()); StringBuffer logPath=new
Java Logger 介紹
一個使用java.util.logging.Logger進行log輸出的示例程式碼如下: package com.sample; import java.io.File; import java.util.logging.FileHandler; import java.
java logger
這個要看你的日誌配置檔案是怎麼配置的,以log4j為例 log4j.appender.mainLog=org.apache.log4j.ConsoleAppender log4j.appender.mainLog=org.apache.log4j.DailyRollingFileAppender 第一個是控制
【java】java自帶的java.util.logging.Logger日誌功能
lena mat logs pre 默認 closed custom err ole 偶然翻閱到一篇文章,註意到Java自帶的Logger日誌功能,特地來細細的看一看,記錄一下。 1.Java自帶的日誌功能,默認的配置 ①Logger的默認配置,位置在JRE安裝目錄下l
java-log4j-xml配置 category、logger、boot 標簽使用
sina 運放 oot margin XML www inf ava app 掌盞撐貝貪下參鴉傺疑http://www.docin.com/sina_6367437814 於鋅中儀蕾柯檀遜渦塗鼓蛔僑http://www.docin.com/sina_6370801430
java-log4j-xml配置category、logger、boot標簽使用
cin com 標簽 oci ddn tar boot xml配置 使用 卑閑洶誌較黴園錳譖釩蒂http://jz.docin.com/ami17633 綴兄怯烈幕怪杖曝嶽脖擋扯http://shufang.docin.com/ami17633 斬莆曰聞藝諫糜粗順迅吹h
java.util.logging.Logger 使用中關於時間格式的問題
tomcat java java.util.logging.Logger類可以打印相關日誌信息並將日誌信息寫入日誌文件 tomcat7默認的日誌格式輸出方法是 java.util.logging.SimpleFormatter.format 如: Apr 11, 201
spring boot項目升級到2.0.1,提示java.lang.ClassNotFoundException: org.apache.log4j.Logger錯誤
ava lan 簡單 src AS dex ack pen pid 首先肯定是版本出現了一點兼容問題 所以我就進入項目,查看依賴樹,cd到項目目錄下,mvn dependency:tree 我看到我的項目原先是1.5.9和現在2.0.1的區別在於org.slf4j的依賴不全
resin發布spring-boot項目報錯“java.lang.NoSuchMethodError: org.jboss.logging.Logger.getMessageLogger”
圖片 ssa 項目啟動 chm dep bubuko ava initial 4.3 說白了還是jar包沖突問題,直接說解決方式: 首先將resin/lib下的validation-api-1.0.0.GA.jar替換成項目中的包validation-api-2.0.1.F
Java Coding Style:static final Logger 的命名問題
簡述 最近公司要求使用PMD做靜態程式碼檢查時 private static final Logger logger = LoggerFactory.getLogger(Example.class); 此類程式碼會提示以下錯誤 A variable naming conve
java.lang.ClassNotFoundException: org.apache.log4j.Logger
java.lang.ClassNotFoundException: org.apache.log4j.Logger 遇到類似的問題,提示就已經很清楚了,沒有找到類,這裡是沒有找到Logger類。 方法一: 第一步 看一下log4j的jar包是否存在,如果不存在,新增ja
java.util.logging.Logger 使用詳解
原文 java.util.logging.Logger 使用詳解 概述: 第1部分 建立Logger物件 第2部分 日誌級別 第3部分 H
tomcat 日誌 java util logging Logger使用 (一)
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/Logger。。。
jar bubuko src lan noclass mage read img erro 學習SpringBoot,啟動主程序遇到如上異常,查找網上發現與slf4j-api-1.7.25.jar有關 到本地倉庫 發現是jar包異常,刪除文件夾,重新更新項目導入j
Java API連線Hbase時報錯WARN No appenders could be found for logger
報錯的內容如下: log4j:WARN No appenders could be found for logger (org.apache.hadoop.metrics2.lib.MutableMetricsFactory). log4j:WARN Pleas
在es的main方法執行報錯Caused by: java.lang.ClassNotFoundException:org.apache.logging.log4j.logger
Caused by: java.lang.ClassNotFoundException:org.apache.logging.log4j.logger 沒有解決辦法 尋求大哥幫忙 檢視maven下的jar包: 雙擊開啟logger.class 發現裡面時空白 說明jar包
tomcat 日誌 java.util.logging.Logger使用 (一)
1:java sdk 自帶的logger配置檔案位於 sdk home目錄下: jdk1.6.0_25\jre\lib\logging.properties 2:啟用該日誌配置有兩種方式 1)用java -Djava.util.logging.config.file=m