logback日志介紹
主要模塊
- logback-access
- logback-classic
- logback-core
主要標(biāo)簽 - logger:主要用于存放日志對(duì)象。
- appender:用于指定日志輸出的目的地。(控制臺(tái)、文件等)
- layout:格式化日志信息的輸出。
logBack的配置 -
新建logback.xml文件
Snipaste_2018-11-11_19-36-22.png
<?xml version="1.0" encoding="utf-8"?>
<!-- scan="true":當(dāng)配置文件發(fā)生改變,將重新加載
scanPeriod="60 seconds":每分鐘自動(dòng)掃描是否配置是否改變
debug="false":如果為true,將打印logback內(nèi)部的日志信息-->
<configuration scan="true" scanPeriod="60 seconds" debug="false">
<!--定義參數(shù)常量 -->
<!-- 日志級(jí)別:TRACE < DUBUG < INFO < WARN < ERROR -->
<!--logger.trace("msg") logger.debug... -->
<property name="log.level" value="debug" />
<!-- 保留多長(zhǎng)時(shí)間 -->
<property name="log.maxHistory" value="30" />
<!-- 日志存儲(chǔ)的根路徑 -->
<property name="log.filePath" value="${catalina.base}/logs/webapps" />
<!-- 日志展現(xiàn)的格式 格式:時(shí)間、線程、級(jí)別、類(lèi)的信息、信息、換行 -->
<property name="log.pattern"
value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n" />
<!--控制臺(tái)設(shè)置 -->
<appender name="consoleAppender" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
</appender>
<!--DEBUG -->
<appender name="debugAppender"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--文件路徑 -->
<file>${log.filePath}/debug.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--文件名稱(chēng) -->
<fileNamePattern>${log.filePath}/debug/debug.%d{yyyy-MM-dd}.log.gz
</fileNamePattern>
<!-- 文件最大保存歷史數(shù)量(30天),若超出,第一天的日志將被刪除 -->
<maxHistory>${log.maxHistory}</maxHistory>
</rollingPolicy>
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
<!-- 只記錄level為DEBUG的日志 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>DEBUG</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!--INFO -->
<appender name="infoAppender"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--文件路徑 -->
<file>${log.filePath}/info.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--文件名稱(chēng) -->
<fileNamePattern>${log.filePath}/info/info.%d{yyyy-MM-dd}.log.gz
</fileNamePattern>
<!-- 文件最大保存歷史數(shù)量(30天) -->
<maxHistory>${log.maxHistory}</maxHistory>
</rollingPolicy>
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
<!-- 只記錄level為INFO的日志 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!--ERROR -->
<appender name="errorAppender"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--文件路徑 -->
<file>${log.filePath}/error.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--文件名稱(chēng) -->
<fileNamePattern>${log.filePath}/error/error.%d{yyyy-MM-dd}.log.gz
</fileNamePattern>
<!-- 文件最大保存歷史數(shù)量(30天) -->
<maxHistory>${log.maxHistory}</maxHistory>
</rollingPolicy>
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
<!-- 只記錄level為ERROR的日志 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- 1.如果沒(méi)有指定logger的level,則默認(rèn)為root的level
2.當(dāng)additivity="true"時(shí),logger會(huì)將父類(lèi)root下的appender-ref也放到logger下
3.一個(gè)類(lèi)只能定義一個(gè)logger,不能同時(shí)定義root,除非 additivity="true" ,logger會(huì)默認(rèn)繼承root
-->
<logger name="com.kings.o2o" level="${log.level}" additivity="true">
<appender-ref ref="debugAppender" />
<appender-ref ref="infoAppender" />
<appender-ref ref="errorAppender" />
</logger>
<root level="info">
<appender-ref ref="consoleAppender" />
</root>
</configuration>
驗(yàn)證配置
修改com.kings.o2o.web.superadmin路徑下的AreaController.java
package com.kings.o2o.web.superadmin;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import com.kings.o2o.entity.Area;
import com.kings.o2o.service.AreaService;
@Controller
@RequestMapping("/superadmin")
public class AreaController {
Logger logger = LoggerFactory.getLogger(AreaController.class);
@Autowired
private AreaService areaService;
@RequestMapping(value = "/listarea",method = RequestMethod.GET)
@ResponseBody
private Map<String,Object> listArea(){
logger.info("===start===");
long startTime = System.currentTimeMillis();
Map<String, Object> modelMap = new HashMap<String,Object>();
List<Area> list = new ArrayList<Area>();
try {
list = areaService.getAreaList();
modelMap.put("rows", list);
modelMap.put("total", list.size());
}catch(Exception e){
e.printStackTrace();
modelMap.put("success", false);
modelMap.put("errMsg", e.toString());
}
logger.error("test error!");
long endTime = System.currentTimeMillis();
logger.debug("costTime:[{}ms]",endTime-startTime);
logger.info("===end===");
return modelMap;
}
}
運(yùn)行tomcat服務(wù)器,在控制臺(tái)找到CATALINA_BASE路徑

Snipaste_2018-11-11_20-06-37.png
進(jìn)入此路徑logs文件夾下的webapps文件夾下有三個(gè)文件。

Snipaste_2018-11-11_20-14-35.png
在瀏覽器輸入連接http://localhost:8080/o2o/superadmin/listarea

Snipaste_2018-11-11_20-17-08.png
查看控制臺(tái)輸出

Snipaste_2018-11-11_20-18-48.png
在之前文件夾下自動(dòng)生成相應(yīng)的文件

Snipaste_2018-11-11_20-20-35.png
