java的logging
1. 在java中如何使用記錄日誌API
import java.util.logging.*;
public class BasicLoggingExample {
public static void main(String args[])
{
Logger logger = Logger.getLogger("BasicLoggingExample");
logger.log(Level.INFO, "Test of logging system");
}
}
getLogger
public static Logger getLogger(String name)為指定子系統查找或創建一個 logger。如果已經創建了具有給定名稱的 logger,則返回該 logger。否則創建一個新的 logger。
如果創建了新的 logger,則根據 LogManager 的配置來其配置日誌級別,並將日誌輸出發送到其父處理程序。日誌配置注冊在 LogManager 全局命名空間內。
參數:
name - logger 的名稱。這應該是一個圓點分隔的名稱,並且通常應該基於子系統的包名或類名(如 java.net 或 javax.swing)。
log
public void log(Level level,String msg)記錄一條不帶參數的消息。
如果當前對於給定的消息級別而言 logger 是啟用的,那麼將給定的消息轉發到所有已注冊的輸出 Handler 對象。
參數:
level - 某個消息級別標識符,例如 SEVERE。
msg - 字元串消息(或消息類別中的鍵)。
2. java.util.logging.logger;怎麼使用
一、創建Logger對象
static Logger getLogger(String name)
為指定子系統查找或創建一個 logger。
static Logger getLogger(String name, String resourceBundleName)
為指定子系統查找或創建一個 logger。
注意:name是Logger的名稱,當名稱相同時候,同一個名稱的Logger只創建一個。
二、Logger的級別
比log4j的級別詳細,全部定義在java.util.logging.Level裡面。
各級別按降序排列如下:
SEVERE(最高值)
WARNING
INFO
CONFIG
FINE
FINER
FINEST(最低值)
此外,還有一個級別 OFF,可用來關閉日誌記錄,使用級別 ALL 啟用所有消息的日誌記錄。
logger默認的級別是INFO,比INFO更低的日誌將不顯示。
Logger的默認級別定義是在jre安裝目錄的lib下面。
# Limit the message that are printed on the console to INFO and above.
java.util.logging.ConsoleHandler.level = INFO
三、簡單實例
public class TestLogger {
public static void main(String[] args) {
Logger log = Logger.getLogger("lavasoft");
log.setLevel(Level.INFO);
Logger log1 = Logger.getLogger("lavasoft");
System.out.println(log==log1); //true
Logger log2 = Logger.getLogger("lavasoft.blog");
log2.setLevel(Level.WARNING);
log.info("aaa");
log2.info("bbb");
log2.fine("fine");
}
}
3. 如何在JAVA中使用日誌文件
import java.util.logging.*;
public class LoggingExample1 {
public static void main(String args[])
{
try{
LogManager lm = LogManager.getLogManager();
Logger logger;
FileHandler fh = new FileHandler("log_test.txt");
logger = Logger.getLogger("LoggingExample1");
lm.addLogger(logger);
logger.setLevel(Level.INFO);
fh.setFormatter(new XMLFormatter());
logger.addHandler(fh);
// root logger defaults to SimpleFormatter. We don't want messages logged twice.
//logger.setUseParentHandlers(false);
logger.log(Level.INFO, "test 1");
logger.log(Level.INFO, "test 2");
logger.log(Level.INFO, "test 3");
fh.close();
} catch(Exception e) {
System.out.println("Exception thrown: " + e);
e.printStackTrace();
}
}
}
給個例子,這個是java 專家編程的第一章中的例子,希望對你有幫助。。。
4. java列印日誌的幾種方式
在Java 中實現記錄日誌的方式有很多種, 下面給你簡單介紹四種:
最簡單的方式,就是system.println.out(error) ,這樣直接在控制台列印消息了。
Java.util.logging ; 在JDK 1.4 版本之後,提供了日誌的API ,可以往文件中寫日誌了。
log4j , 最強大的記錄日誌的方式。 可以通過配置 .properties 或是 .xml 的文件, 配置日誌的目的地,格式等等。
commons-logging, 最綜合和常見的日誌記錄方式, 經常是和log4j 結合起來使用。
5. java的Baselogger文件在哪裡看
lib文件里查詢。
系統自帶的包還有程序員設置的包都在lib文件夾下面。
在Java中,自帶了一個 javautilloggingLogger由於有log4j的存在,這個再帶的logger貌似使用比較少,首先先定製屬性以及初始格式化,此時程序員定義lonnger時,jvm虛擬機也會自動生成一個jvm,所以返回時會生成兩個。
6. java commons.logging 包問題。
Project -> Properties ->java build path-> libraries->add external jars 選擇你要導入得commons-logging.jar這個包。沒必要刪除什麼,添加這個就行了。 這個jar包可以去官網http://commons.apache.org/logging/download_logging.cgi下載
7. java logger 參數怎麼寫
Logger所對應的屬性文件在安裝jdk目錄下的jre/lib/logging.properties
logging.properties文件中的
handlers= java.util.logging.ConsoleHandler 將日誌內容輸出到控制台
handlers= java.util.logging.FileHandler 將日誌文件輸出到文件中
handlers= java.util.logging.ConsoleHandler,java.util.logging.FileHandler 將日誌內容同時輸出到控制台和文件中
# Limit the message that are printed on the console to INFO and above.
java.util.logging.ConsoleHandler.level = INFO //日誌輸出級別
java.util.logging.FileHandler.pattern = %h/java%u.log 為生成的輸出文件名稱指定一個模式。
模式由包括以下特殊組件的字元串組成,則運行時要替換這些組件:
"/" 本地路徑名分隔符
"%t" 系統臨時目錄
"%h" "user.home" 系統屬性的值
"%g" 區分循環日誌的生成號
"%u" 解決沖突的惟一號碼
"%%" 轉換為單個百分數符號"%"
如果未指定 "%g" 欄位,並且文件計數大於 1,那麼生成號將被添加到所生成文件名末尾的小數點後面。
java.util.logging.FileHandler.limit = 50000 限制文件的大小,以位元組為單位
java.util.logging.FileHandler.count = 1 指定有多少輸出文件參與循環(默認為 1)。
java.util.logging.FileHandler.formatter = java.util.logging.XMLFormatter 指定要使用的 Formatter 類的名稱(默認為java.util.logging.XMLFormatter)。 另外一個是:java.util.logging.SimpleFormatter。XMLFormatter是以xml樣式輸出,SimpleFormatter是以普通樣式輸出。
java.util.logging.FileHandler.append 指定是否應該將 FileHandler 追加到任何現有文件上(默認為 false)。
8. java.util.logging.Logger的用法
這是我項目中的日誌文件
#定義控制台輸出A1
#log4j.appender.A1=org.apache.log4j.ConsoleA#ppender這句表明A1是輸出到控制台
#下面2句R是滾動日誌文件,且保存在#logs/log4jdebug.log
#log4j.appender.R=org.apache.log4j.RollingFi#leAppender
#log4j.appender.R.File=logs/log4jdebug.log
#file同R一樣,在不同的地方再次保存了一個日誌
#文件,其他的就是定義顯示樣式拉,比如以文本的
#形式還是html格式,以及顯示格式了,比如顯示的
#時候是否顯示系統時間,是從那個類,好多行列印
#出來的消息等等.
log4j.rootLogger=DEBUG, A1 , R , file
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=logs/log4jdebug.log
log4j.appender.R.MaxFileSize=100KB
log4j.appender.R.MaxBackupIndex=1
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n
#定義一個名字為file的Appender,它的類型是RollingFileAppender。
log4j.appender.file=org.apache.log4j.RollingFileAppender
#設置最大文件尺寸為1MB,當日誌文件大小達到1MB時,開始備份到備份文件中。
log4j.appender.file.MaxFileSize=1MB
#設置備份文件的最大數目為2個文件。
log4j.appender.file.MaxBackupIndex=2
#指定file Appender輸出的日誌文件的名字和存放路徑。
#log4j.appender.file.File=F:/JSPLesson/ch19/WEB-INF/ch19roll.log
log4j.appender.file.File=logs/log4jdebug.html
#file Appender使用的Layout的是PatternLayout。
log4j.appender.file.layout=org.apache.log4j.PatternLayout
#file Appender使用的Layout的是HTMLLayout。
log4j.appender.file.layout=org.apache.log4j.HTMLLayout
#LocationInfo用於指定列印日誌信息的語句所在的文件名和行號是否輸出,預設值為false。
log4j.appender.file.layout.LocationInfo=true
把這個文件存為log4j.properties
放在WEB-INF目錄下就可以了.
我說樓主,這沒什麼難得.
class helloworld{
private static Logger log=Logger.getLogger(helloworld.class);
public static void main(String args[]){
log.debug("hello,world!");
log.info("hello,world");
log.fatal("hello,world");
}
}
你要多動手啊.
9. Spring Boot Logging 配置
Spring Boot 能夠使用Logback, Log4J2 , java util logging 作為日誌記錄工具。Spring Boot 默認使用Logback作為日誌記錄工具。日誌默認輸出到控制台但也能輸出到文件中。我們通過spring-boot-starter-logging 加入Logback依賴,其實只要我們加入任意的Spring Boot starter 都會默認引入spring-boot-starter-logging,因此 我們不需要分開加入他們。
logging.level.* : 作為package(包)的前綴來設置日誌級別。
logging.file : 配置日誌輸出的文件名,也可以配置文件名的絕對路徑。
logging.path : 配置日誌的路徑。如果沒有配置 logging.file ,Spring Boot 將默認使用spring.log作為文件名。
logging.pattern.console : 定義console中logging的樣式。
logging.pattern.file : 定義文件中日誌的樣式。
logging.pattern.level : 定義渲染不同級別日誌的格式。默認是%5p.
logging.exception-conversion-word : .定義當日誌發生異常時的轉換字
PID : 定義當前進程的ID
下面將討論在 application.properties , application.ym , Logback XML 中配置Logback以及在Spirng Boot 應用中使用Log4J2.
logging.level設置日誌級別。我們可以使用TARCE , DEBUG , INFO , WARN , ERROR , FATAL , OFF 。可以使用root級別和package級別來控制日誌的輸入級別。創建一個具有以下依賴關系的應用程序。
使用 srcmain esourcesapplication.properties 配置日誌級別
使用 srcmain esourcesapplication.yml
Spring Boot 默認把日誌輸入到console,如果我們要把日誌輸入到文件中,需要配置logging.file 或者logging.path屬性性。logging.file屬性用來定義文件名。他不僅僅可以配置文件名,也可以路徑+文件名。
在這種情況下mylogfile.log將在根目錄中創建。我們也可以為為mylogfile.log分配一個路徑,如concretepage/mylogfile.log。這種情況下我們將在相對根目錄下創建concretepage/mylogfile.log。我們也可以為日誌文件配置絕對路徑。
application.yml 中配置
配置logging.path或者logging.path屬性將日誌輸出到文件夾中。logging.path屬性用來定義日誌文件路徑
在 application.properties 中配置logging.path屬性
將會相對根路徑下創建concretepage/logs/spring.log ,也可以配置絕對路徑
application.yml 配置
通過設置logging.patter.console屬性我們能改變輸出到console的日誌樣式。日誌樣式包括時間,日誌級別,線程名,日誌名以及消息。我們可以按我們的喜好改變日誌樣式。
application.properties
application.yml
改變文件中的日誌樣式我們需要設置logging.pattern.file屬性。首先通過logging.file或logging.path屬性,把日誌記錄到文件中。
通過logging.path屬性將在根目錄下創建concretepage/logs並默認使用spring.log作為文件名。logging.pattern.console是設置console的日誌樣式
application.yml
通過命令行改變日誌的輸出級別
Sping Boot 默認輸出ERROR , WARN , INFO 級別的日誌。我們可以通過命令行使能DEBUG ,TRACE級別的日誌輸出,效果是跟配置文件一樣的。想像我們有一個名為my-app.jar的可執行的JAR包我們可以在啟動應用是使能DEBUG級別日誌輸出。
在application.properties中配置
application.yml
相同的方式使能TRACE級別的日誌
application.properties
application.yml
在應用程序中記錄日誌
創建一個SLF4J的例子,首先獲得org.slf4j.Logger的實例。
在application.properties配置包com.concretepage日誌記錄級別
輸出
使用Logback XML 文件
Sping Boot中默認使用logback, 我們可以在application.properties或者application.yml中設置日誌級別。如果想使用XML配置Logback,我們需要在類路徑下創建logback-spring.xml文件
srcmain
esourceslogback-spring.xml
使用自定義日誌:Log4J2
我們使用任何的starter,默認加入Logback 依賴spring-boot-starter-logging。為了使用Log4J2,我們首先要去除spring-boot-starter-logging並且引入spring-boot-starter-log4j2 依賴
現在我們可以在類路徑下創建並配置log4j2-spring.xml
原文: http://www.concretepage.com/spring-boot/spring-boot-logging-example
10. java的logger寫日誌的時候,能不覆蓋舊日誌,直接寫新日誌么
可以的,你在你的log.properties中增加下面一個設置就可以了
java.util.logging.FileHandler.count = 100
表示總共保存100個文件,到了100個文件後才會開始覆蓋
這個數字你可以自己隨便來改。
如果你要進行全局的日誌配置的修改就直接改jre下面的log.properties,否則就改你自己專用的log.properties。