生活随笔
收集整理的這篇文章主要介紹了
牛客网项目——前置技术(四):项目调试技巧
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
文章目錄
- 1. 響應(yīng)狀態(tài)碼的含義
- 2. 服務(wù)端斷點(diǎn)調(diào)試技巧
- 3. 客戶端斷點(diǎn)調(diào)試技巧
- 4. 設(shè)置日志級別,并將日志輸出到不同的終端
- 4.1 test下創(chuàng)建LoggerTests
- 4.2 配置文件
- 4.3 把日志打到文件
1. 響應(yīng)狀態(tài)碼的含義
1.1 官方網(wǎng)站
https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status
信息響應(yīng) (100–199)成功響應(yīng) (200–299)重定向消息 (300–399)客戶端錯(cuò)誤響應(yīng) (400–499)服務(wù)端錯(cuò)誤響應(yīng) (500–599)
1.2 常見返回碼
200:成功響應(yīng)。302:重定向。如:注冊成功后重定向到新頁面
404:服務(wù)器找不到請求的資源。500:服務(wù)器遇到了不知道如何處理的情況。
2. 服務(wù)端斷點(diǎn)調(diào)試技巧
在想調(diào)試的地方打斷點(diǎn)
兩種方法進(jìn)入debug調(diào)試
F8:讓程序向下執(zhí)行一行
F7:進(jìn)入當(dāng)前方法內(nèi)部
F9:向下執(zhí)行完畢,或到下一個(gè)斷點(diǎn)
左下角斷點(diǎn)管理
3. 客戶端斷點(diǎn)調(diào)試技巧
在“發(fā)布”上打斷點(diǎn)
F10:向下執(zhí)行一行F11:進(jìn)入方法內(nèi)部F8:下一個(gè)斷點(diǎn)或執(zhí)行完畢
4. 設(shè)置日志級別,并將日志輸出到不同的終端
https://logback.qos.ch/
如:啟用info級,info及以上信息才會(huì)記錄顯示
4.1 test下創(chuàng)建LoggerTests
package com.nowcoder.community;import org.junit.Test;
import org.junit.runner.RunWith;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringRunner;@RunWith(SpringRunner.class)
@SpringBootTest
@ContextConfiguration(classes
= CommunityApplication.class)
public class LoggerTests {private static final Logger logger
= LoggerFactory.getLogger(LoggerTests.class);@Testpublic void testLogger() {System.out
.println(logger
.getName());logger
.debug("debug log");logger
.info("info log");logger
.warn("warn log");logger
.error("error log");}}
4.2 配置文件
Properties設(shè)置級別改成debug
#logging.level.com.nowcoder.community=debug
debug及以上都輸出
4.3 把日志打到文件
設(shè)置文件路徑
#logging.file=d:/work/data/nowcoder/community.log
logback-spring.xml
可以的地方:路徑,包名,日志大小
<?xml version="1.0" encoding="UTF-8"?>
<configuration><contextName>community
</contextName><property name="LOG_PATH" value="D:/work/data"/><property name="APPDIR" value="community"/><appender name="FILE_ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender"><file>${LOG_PATH}/${APPDIR}/log_error.log
</file><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><fileNamePattern>${LOG_PATH}/${APPDIR}/error/log-error-%d{yyyy-MM-dd}.%i.log
</fileNamePattern><timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"><maxFileSize>5MB
</maxFileSize></timeBasedFileNamingAndTriggeringPolicy><maxHistory>30
</maxHistory></rollingPolicy><append>true
</append><encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><pattern>%d %level [%thread] %logger{10} [%file:%line] %msg%n
</pattern><charset>utf-8
</charset></encoder><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>error
</level><onMatch>ACCEPT
</onMatch><onMismatch>DENY
</onMismatch></filter></appender><appender name="FILE_WARN" class="ch.qos.logback.core.rolling.RollingFileAppender"><file>${LOG_PATH}/${APPDIR}/log_warn.log
</file><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><fileNamePattern>${LOG_PATH}/${APPDIR}/warn/log-warn-%d{yyyy-MM-dd}.%i.log
</fileNamePattern><timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"><maxFileSize>5MB
</maxFileSize></timeBasedFileNamingAndTriggeringPolicy><maxHistory>30
</maxHistory></rollingPolicy><append>true
</append><encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><pattern>%d %level [%thread] %logger{10} [%file:%line] %msg%n
</pattern><charset>utf-8
</charset></encoder><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>warn
</level><onMatch>ACCEPT
</onMatch><onMismatch>DENY
</onMismatch></filter></appender><appender name="FILE_INFO" class="ch.qos.logback.core.rolling.RollingFileAppender"><file>${LOG_PATH}/${APPDIR}/log_info.log
</file><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><fileNamePattern>${LOG_PATH}/${APPDIR}/info/log-info-%d{yyyy-MM-dd}.%i.log
</fileNamePattern><timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"><maxFileSize>5MB
</maxFileSize></timeBasedFileNamingAndTriggeringPolicy><maxHistory>30
</maxHistory></rollingPolicy><append>true
</append><encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><pattern>%d %level [%thread] %logger{10} [%file:%line] %msg%n
</pattern><charset>utf-8
</charset></encoder><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>info
</level><onMatch>ACCEPT
</onMatch><onMismatch>DENY
</onMismatch></filter></appender><appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>%d %level [%thread] %logger{10} [%file:%line] %msg%n
</pattern><charset>utf-8
</charset></encoder><filter class="ch.qos.logback.classic.filter.ThresholdFilter"><level>debug
</level></filter></appender><logger name="com.nowcoder.community" level="debug"/><root level="info"><appender-ref ref="FILE_ERROR"/><appender-ref ref="FILE_WARN"/><appender-ref ref="FILE_INFO"/><appender-ref ref="STDOUT"/></root></configuration>
總結(jié)
以上是生活随笔為你收集整理的牛客网项目——前置技术(四):项目调试技巧的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。