idea工具java日誌 Log4j+slf4j使用

參考博文:http://www.blogjava.net/zzzlyr/articles/353039.htmlhtml

這幾天一直在用logger記錄日誌,但一直不明白log4j.properties配置文件意思,下面看看其餘博主文章給本身充充電。java

本人認爲日誌記錄不只能夠幫記錄執行結果,看代碼執行是否正常,而且在排查問題時也能很快幫助你定位有問題代碼。web

1、介紹
Log4j是一個用Java編寫的可靠,快速和靈活的日誌框架(API),是Apache的一個開放源代碼項目,經過使用Log4j,咱們能夠控制日誌信息輸送的目的地是控制檯、文件、GUI組件、甚至是套接口服務 器、NT的事件記錄器、UNIX Syslog守護進程等;咱們也能夠控制每一條日誌的輸出格式;經過定義每一條日誌信息的級別,咱們可以更加細緻地控制日誌的生成過程。
spring

Log4j由三個重要的組件構成:apache

  • loggers: 負責捕獲記錄信息,日誌信息的優先級api

  • appenders : 負責發佈日誌信息,日誌信息的輸出目的地session

  • layouts: 負責格式化不一樣風格的日誌信息,日誌信息的輸出格式app

從源碼角度深刻分析log4j配置文件使用:http://www.cnblogs.com/davidwang456/p/4243161.html


注意:框架

一、日記記錄的優先級(低到高)maven

#  控制檯顯示的內容是:優先級大於等於log4j.properties中配置的信息。

# ALL< DEBUG < INFO < WARN < ERROR < FATAL < OFF.
# Log4j建議只使用FATAL ,ERROR ,WARN ,INFO ,DEBUG這五個級別。
# ERROR 爲嚴重錯誤 主要是程序的錯誤
# WARN 爲通常警告,好比session丟失
# INFO 爲通常要顯示的信息,好比登陸登出
# DEBUG 爲程序的調試信息


二、Log4j配置簡單示列:

第一步:maven 依slf4j包或手動引入以下jar包

一、slf4j-api-1.7.5.jar

二、slf4j-log4j12-1.7.5.jar

三、log4j-1.2.16.jar


第二步:在resource中配置log4j.properties(或者log4j.xml)配置文件

#配置根Logger
log4j.rootLogger = [ level ] , appenderName1 , appenderName2 , …
#配置日誌信息輸出目的地Appender
log4j.appender.appenderName = fully.qualified.name.of.appender.class
log4j.appender.appenderName.option1 = value1
log4j.appender.appenderName.optionN = valueN
 
#配置日誌信息的格式(佈局)
log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class
log4j.appender.appenderName.layout.option1 = value1
log4j.appender.appenderName.layout.optionN = valueN

    appenderName就是指定日誌信息輸出到哪一個地方。可同時指定多個輸出目的地

log4j.rootLogger=DEBUG,console,D,E

log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout = org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss,SSS} [%c]-[%p] %m%n

# 輸出DEBUG 級別以上的日誌到
log4j.appender.D = org.apache.log4j.RollingFileAppender
log4j.appender.D.Threshold=DEBUG
# DEBUG 級別以上的日誌輸出目錄
log4j.appender.D.File = C:/Users/admin/Desktop/debug.log
log4j.appender.D.Append = true
log4j.appender.D.MaxFileSize=5MB
log4j.appender.D.layout= org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss,SSS} [%c]-[%p] %m%n

# 輸出ERROR 級別以上的日誌到
log4j.appender.E = org.apache.log4j.RollingFileAppender
log4j.appender.E.Threshold=ERROR
log4j.appender.E.File = C:/Users/admin/Desktop/error.log
log4j.appender.E.Append = true
log4j.appender.E.MaxFileSize=5MB
log4j.appender.E.layout= org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss,SSS} [%c]-[%p] %m%n


注意:Log4j的配置

因爲WebApplicationContext須要使用日誌功能,用戶能夠將log4j.properties放置在類路徑下,這樣就會自動啓動。若是放在其餘地方,必須在web.xml中指定Log4j配置文件的位置。Spring爲啓動Log4j引擎提供了兩個類og4jConfigServlet和Log4jConfigListener,無論哪一種方式都必須保證可以在裝載Spring配置文件前先裝載Log4J配置信息。

<context-param>  
    <param-name>log4jConfigLocation</param-name>  
    <param-value>/WEB-INF/log4j.properties</param-value>    
  </context-param>  
  <servlet>  
    <servlet-name>log4jConfigServlet</servlet-name>  
    <servlet-class>org.springframework.web.util.Log4jConfigServlet</servlet-class>  
    <load-on-startup>1</load-on-startup>  
  </servlet>


第三步:使用日誌,在controller層使用日誌

@Controller
@RequestMapping(value = "/api/controller/brand")
public class BrandController {
 
    private static Logger logger = LoggerFactory.getLogger(BrandController.class);
    @Autowired
    private BrandService brandService;
 
    @RequestMapping(value = "/update", method = RequestMethod.POST)
    public Brand update(Model model){
        Brand brand = brandService.findByBrandCode("1a9e2fb7-d8d3-4dce-a50b-52c77efb2629");
        brandService.update(brand);
        //SLF4J的日誌消息使用佔位符"{}"代替了經常使用的字符串拼接,據官方說這樣速度更快
        logger.info("{}更新成功",brand.getId());
        logger.error("更新失敗");
        logger.debug("debug功能");
        return brand;
    }



三、知識點:

log4j.rootLogger=info,stdout, R 定義 logger記錄大於等於info優先級日誌信息,stdout表示在控制檯顯示,R表示日誌記錄在文件中。

stdout:

log4j.appender.stdout=org.apache.log4j.ConsoleAppender  意思是把日誌輸出到控制檯

log4j.appender.stdout.layout=org.apache.log4j.PatternLayout   意思是日誌在控制檯顯示佈局模式

log4j.appender.stdout.layout.ConversionPattern=%d{HH\:mm\:ss} %c{1} - %m%n 表示日誌輸出的格式,%d{HH\:mm\:ss} %c{1} - %m%n表示時:分:秒 類名 日誌信息 換行

R:

log4j.appender.R=org.apache.log4j.RollingFileAppender  :日誌文件大小到達指定尺寸的時候產生一個新的文件

log4j.appender.R.File=mat.log 表示是放日誌文件的路徑

log4j.appender.R.MaxFileSize=5MB   表示指定日誌文件大小

log4j.appender.R.layout=org.apache.log4j.PatternLayout  日誌記錄的佈局模式

log4j.appender.R.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss,SSS} [%c]-[%p] %m%n 表示日誌輸出格式

年-月-日 時:分:秒 類名 優先級顯示日誌信息 換行


#appender名字定義

#appender名字定義
log4j.rootLogger=INFO,FILE,consoleAppender,RollingFile,MAIL,DailyRollingFile,DATABASE
log4j.addivity.org.apache=true

#配置日誌信息輸出目的地
#log4j.appender.appenderName = fully.qualified.name.of.appender.class
#(如:log4j.appender.RollingFile = org.apache.log4j.RollingFileAppender)
# 1.org.apache.log4j.ConsoleAppender(控制檯)
# 2.org.apache.log4j.FileAppender(文件)
# 3.org.apache.log4j.DailyRollingFileAppender(天天產生一個日誌文件)
# 4.org.apache.log4j.RollingFileAppender(文件大小到達指定尺寸的時候產生一個新的文件)
# 5.org.apache.log4j.WriterAppender(將日誌信息以流格式發送到任意指定的地方)

#配置日誌信息的格式
#log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class
#(如:log4j.appender.RollingFile.layout = org.apache.log4j.HTMLLayout)
# 1.org.apache.log4j.HTMLLayout(以HTML表格形式佈局),
# 2.org.apache.log4j.PatternLayout(能夠靈活地指定佈局模式),
# 3.org.apache.log4j.SimpleLayout(包含日誌信息的級別和信息字符串),
# 4.org.apache.log4j.TTCCLayout(包含日誌產生的時間、線程、類別等等信息)


#輸出格式:layout中的參數都以%開始,後面不一樣的參數表明不一樣的格式化信息(參數按字母表順序列出):

# %c 輸出所屬類的全名,可在修改成 %d{Num} ,Num類名輸出的維(如:"org.apache.elathen.ClassName",%C{2}將輸出elathen.ClassName)
# %d 輸出日誌時間其格式爲 %d{yyyy-MM-dd HH:mm:ss,SSS},可指定格式 如 %d{HH:mm:ss}
# %l 輸出日誌事件發生位置,包括類目名、發生線程,在代碼中的行數
# %n 換行符
# %m 輸出代碼指定信息,如info(「message」),輸出message
# %p 輸出優先級,即 FATAL ,ERROR 等
# %r 輸出從啓動到顯示該log信息所耗費的毫秒數
# %t 輸出產生該日誌事件的線程名


#ConsoleAppender,控制檯輸出#FileAppender,文件日誌輸出#SMTPAppender,發郵件輸出日誌#SocketAppender,Socket日誌#NTEventLogAppender,Window NT日誌#SyslogAppender,#JMSAppender,#AsyncAppender,#NullAppender

相關文章
相關標籤/搜索