最近項目中用到了logback 記錄日志, 關於為啥使用logback 請百度一下: logback與Log4J的區別
- 更快,容量更小
- 充分的測試
- logback-class 非常自然的實現了slf4J 接口
- 充分的文檔介紹
- 自動重新加載配置文件(如果配置文件修改了)
- 謹慎的模式和非常友好的恢復
- Filters(過濾器)結合MDC 使用
- SiftingAppender 結合MDC使用
- 自動壓縮日志機制
- 自動打印堆棧數中包的數據
- 自動輪換日志以及清除日志
好了,廢話不多說,直奔主題, 研究了好久,終於將日志按級別將日志分文件打印出來了, 具體步驟如下:
1. 下載對於的JAR 包:
http://logback.qos.ch/
logback-access-1.1.2.jar
logback-classic-1.1.2.jar
logback-core-1.1.2.jar
http://www.slf4j.org/
slf4j-api-1.7.10.jar
mvaven , 配置如下:
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.1.3</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-access</artifactId>
<version>1.1.3</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>1.1.3</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.12</version>
</dependency>
!!!如果是Springboot,則只需要包含下面這個即可:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.1.1.RELEASE</version>
</dependency>
2. 創建一個web project, 寫一個簡單的JAVA class 或者Servlet.
public class ILoveYou{ private final static Logger log = LoggerFactory.getLogger(ILoveYou.class); public static void main(String[] arg){
if(logger.isDebugEnabled()){
logger.debug("debug::"+JSON.toJSONString(user));
}
if(logger.isTraceEnabled()){
logger.trace("trace::"+JSON.toJSONString(user));
}
log.info("=====================33333333info333333333====================");
log.warn(" =====================warn=444444444444===================");
log.error(" =====================error====55555555555================");
}
}
4. 將第一步所下載的jar包導入, 並運行, 控制台打印出如下信息
==111111111=======trace ===================
============22222===debug2222222====================
=====================33333333info333333333====================
=====================warn=444444444444===================
=====================error====55555555555================
5. 建立日志配置文件: logback.xml (或者logback-test.xml)
<?xml version="1.0" encoding="UTF-8"?> <configuration> <!-- 定義log 文件的 home 目錄 --> <property name="LOG_HOME" value="C:/Users/Administrator/Desktop/logs"></property> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <!-- %.-1level 只顯示信息級別的首字母,%-5level 左對齊顯示信息級別全稱 --> <Pattern>[%date{yyyy-MM-dd HH:mm:ss}] [%-5level] --%mdc{client} %msg%n</Pattern> </encoder> </appender> <appender name="TRACE_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <encoding>UTF-8</encoding> <file>${LOG_HOME}/trace.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <FileNamePattern>logs/trace.%d{yyyy-MM-dd}.log</FileNamePattern> </rollingPolicy> <layout> <pattern>[%date{yyyy-MM-dd HH:mm:ss}] [%-5level] [%logger:%line] --%mdc{client} %msg%n</pattern> </layout> <!-- <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>TRACE</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> --> </appender> <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <encoding>UTF-8</encoding> <file>${LOG_HOME}/info.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <FileNamePattern>logs/info.%d{yyyy-MM-dd}.log</FileNamePattern> </rollingPolicy> <layout> <pattern>[%date{yyyy-MM-dd HH:mm:ss}] [%-5level] [%logger:%line] --%mdc{client} %msg%n</pattern> </layout> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>INFO</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <appender name="DEBUG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <encoding>UTF-8</encoding> <file>${LOG_HOME}/debug.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <FileNamePattern>logs/debug.%d{yyyy-MM-dd}.log</FileNamePattern> </rollingPolicy> <layout> <pattern>[%date{yyyy-MM-dd HH:mm:ss}] [%-5level] [%logger:%line] --%mdc{client} %msg%n</pattern> </layout> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>DEBUG</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <appender name="WARN_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <encoding>UTF-8</encoding> <file>${LOG_HOME}/warn.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <FileNamePattern>logs/warn.%d{yyyy-MM-dd}.log</FileNamePattern> </rollingPolicy> <layout> <pattern>[%date{yyyy-MM-dd HH:mm:ss}] [%-5level] [%logger:%line] --%mdc{client} %msg%n</pattern> </layout> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>WARN</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <encoding>UTF-8</encoding> <file>${LOG_HOME}/error.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <FileNamePattern>logs/error.%d{yyyy-MM-dd}.log</FileNamePattern> </rollingPolicy> <layout> <pattern>[%date{yyyy-MM-dd HH:mm:ss}] [%-5level] [%logger:%line] --%mdc{client} %msg%n</pattern> </layout> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>ERROR</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <!-- <logger name="com.mchange" level="INFO"/> <logger name="org.springframework" level="WARN"/> <logger name="java.sql.Connection" level="DEBUG"/> <logger name="java.sql.ResultSet" level="INFO"/> <logger name="com.boaotech.util" level="DEBUG"/> --> <root level="TRACE"> <appender-ref ref="STDOUT"/> <appender-ref ref="TRACE_FILE" /> <appender-ref ref="INFO_FILE" /> <appender-ref ref="DEBUG_FILE" /> <appender-ref ref="WARN_FILE" /> <appender-ref ref="ERROR_FILE" /> </root> </configuration>
6. 將logback.xml 放置到web工程的classes目路下,運行項目,看你的桌面,是否有如下日志文件:

分別記錄上面trace, info, debug, warn, error 的日志。
日志需要系統的學習一下,你到官網學習!
