文章目录

  • 1. 响应状态码的含义
    • 1.1 官方网站
    • 1.2 常见返回码
  • 2. 服务端断点调试技巧
  • 3. 客户端断点调试技巧
  • 4. 设置日志级别,并将日志输出到不同的终端
    • 4.1 test下创建LoggerTests
    • 4.2 配置文件
    • 4.3 把日志打到文件

1. 响应状态码的含义

1.1 官方网站

https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status

  1. 信息响应 (100–199)
  2. 成功响应 (200–299)
  3. 重定向消息 (300–399)
  4. 客户端错误响应 (400–499)
  5. 服务端错误响应 (500–599)

1.2 常见返回码

  1. 200:成功响应。
  2. 302:重定向。如:注册成功后重定向到新页面
  3. 404:服务器找不到请求的资源。
  4. 500:服务器遇到了不知道如何处理的情况。

2. 服务端断点调试技巧

  1. 在想调试的地方打断点

  2. 两种方法进入debug调试

  3. F8:让程序向下执行一行

  4. F7:进入当前方法内部

  5. F9:向下执行完毕,或到下一个断点

  6. 左下角断点管理

3. 客户端断点调试技巧

在“发布”上打断点

  1. F10:向下执行一行
  2. F11:进入方法内部
  3. F8:下一个断点或执行完毕

4. 设置日志级别,并将日志输出到不同的终端

https://logback.qos.ch/

如:启用info级,info及以上信息才会记录显示

4.1 test下创建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设置级别改成debug

#logging.level.com.nowcoder.community=debug

debug及以上都输出

4.3 把日志打到文件

  1. 设置文件路径
#logging.file=d:/work/data/nowcoder/community.log
  1. 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"/><!-- error file --><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><!-- warn file --><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><!-- info file --><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><!-- console --><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>

牛客网项目——前置技术(四):项目调试技巧相关推荐

  1. 牛客网SQL刷题四-电商场景(某东商城)

    SQL13 计算商城中2021年每月的GMV 数据 DROP TABLE IF EXISTS tb_order_overall; CREATE TABLE tb_order_overall (id I ...

  2. 网络基础——牛客网刷题第四波

    芒种节气,端午前夕,志玲姐姐宣布结婚,各位男同胞挺住. 1.ATM 网络采用固定长度的信元传送数据,信元长度为(  B  ) A. 1024B B. 53B C. 128B D. 64B 解析:ATM ...

  3. C++牛客网编程(十四)

    目录 二叉树中和为某一值的路径(三) 在二叉树中找到两个结点的最近父结点 二叉搜索树的最近公共父结点 二叉树中和为某一值的路径(三) 描述:给定一个二叉树root和一个整数值 sum ,求该树有多少路 ...

  4. 2019牛客网高级项目

    本项目是一个基于SpringBoot的社区平台,实现了牛客网讨论区的功能.实现了邮箱注册.验证码登录.发帖.评论.私信.点赞.关注.统计网站访问次数等功能,数据库使用Mybatis.Redis,使用K ...

  5. 大数据技术基础综合项目——牛客网招聘岗位统计分析

    大数据技术基础综合项目--牛客网招聘岗位统计分析 文章目录 大数据技术基础综合项目--牛客网招聘岗位统计分析 零.实验环境说明 一.数据集来源及说明 二.数据预处理阶段 2.1 删除空行的数据 2.2 ...

  6. 从零开始—仿牛客网讨论社区项目(一)

    主要技术架构: SpringBoot Spring SpringMVC MyBatis Redis Kakfa Elasticsearch Spring Security Spring Actator ...

  7. 从零开始—仿牛客网讨论社区项目(六)

    主要技术架构: SpringBoot Spring SpringMVC MyBatis Redis Kakfa Elasticsearch Spring Security Spring Actator ...

  8. Java牛客网社区项目——知识点面试题

    Java牛客网社区项目--知识点&面试题 持续更新中(ง •̀_•́)ง 文章目录 Java牛客网社区项目--知识点&面试题 请简要介绍一下你的项目? 什么是Spring框架? 对Sp ...

  9. 仿牛客网项目第二章:开发社区登录模块(详细步骤和思路)

    目录 1. 发送邮件 1.0 三步走 1.1 邮箱设置 1.2 Spring Email 1.3 模板引擎 1.4 发送邮件的过程 1.5 检验发送邮件的过程 2. 开发注册功能 2.0 注册功能的步 ...

  10. 【牛客网C++服务器项目学习】-Day09-网络模型个人总结

    项目学习地址:[牛客网C++服务器项目学习] day09 项目学习进入了第四章--网络编程.这一章的学习,前半段是对计算机网络体系进行一个大致的讲解.我自己在今年4月份系统性的看了<计算机网络自 ...

最新文章

  1. PCB的EMC设计之PCB叠层结构
  2. getchar getche getch的区别
  3. 框架设计:实现数据的按需更新与插入的改进--用数据对比进一步说明
  4. GridView导出为Excel
  5. java 截串_java字符串截取
  6. Mybatis 逆向工程使用姿势不对文档全被清空,一怒之下写了个插件……
  7. 给职场人士的四点良心建议
  8. Intellij IDEA 构建Spring Web项目 — 用户登录功能
  9. 2019全国地图数据下载-高德腾讯百度地图
  10. RPG Maker MV常用的一些插件
  11. 多语言国家与缩写映射表
  12. python算积分蒙特卡罗_python编程通过蒙特卡洛法计算定积分详解
  13. Android 系统时间自动更新机制--解决 “时间和日期不准确“
  14. python 代码转程序_python2代码转python3
  15. css3的弹性盒子模型,css3弹性盒子模型——回顾。
  16. 会计 复式记账 财务会计 系统设计 数据库建模(待翻译)
  17. 数据归一化(normalizing)的直观理解和通俗解释。
  18. python数据驱动+读取yaml文件+读取excel文件+mySQL
  19. Fast-slam算法流程及优化
  20. 计算机专业人员实用软件推荐

热门文章

  1. HTAP与OLAPOLTP之间的关系
  2. 【刷题笔记】--lintcode木头加工(java)
  3. 深入理解Linux网络技术内幕学习笔记第十九章:因特网协议第四版(IPv4):Linux的原理和功能
  4. v-model的用法与解析
  5. Linux进程原理及系统调用
  6. 2022长安杯赛后复现
  7. 从哪里租vps远程桌面服务器,vps远程桌面服务器出租
  8. 负重前行的电信运营商
  9. 解决margin塌陷问题
  10. BarTender 打印机的控制详解