项目问题总结

项目问题

1.全局异常无法处理

2.localhost,127.0.0.1和本机ip地址的区别

3.nginx反向代理的使用

项目问题

1.全局异常无法处理

①问题描述

  • 在容器启动成功后可以成功打印日志(controller层)
  • 在容器启动失败后直接返回code1
    nacos未启动直接返回code1
    openfeign配置错误直接返回code1

②问题探究1

  • 目的:是否是JVM运行时异常
  • 结论:不是JVM运行时异常,能够打印异常
  • 利用try-catch对主启动代码进行处理,此时能够打印异常日志
  • 查看idea中启动日志也直接为code1
  • 排除JVM运行的异常

③问题探究2

  • 目的:是否和全局日志有关
  • 结论:和全局日志有关
  • 是否是全局日志的问题logback-spring.xml
  • 加全局日志处理 加全局异常捕获处理
  • 无法捕获异常直接返回code1
  • 不加全局日志处理,加全局异常捕获处理
  • 能够捕获异常(不是全局异常处理的)
  • 不加全局日志处理,不加全局异常捕获处理
  • 能够捕获异常

③问题探究3

  • 目的:探究全局异常捕获能否捕获spring容器启动异常@RestControllerAdvice+ @ExceptionHandler
  • 结论:全局异常捕获只能捕获controller层异常,spring容器启动异常无法捕获
  • 总体不加全局日志处理,加全局异常捕获处理
  • 在controller层和@bean都手动抛出异常
  • 启动无法启动,抛出异常(不由全局异常处理)
  • 在controller层去掉异常,@bean都手动抛出异常
  • 启动无法启动,抛出异常(不由全局异常处理)
  • 在controller层异常,@bean都不抛出异常
  • 启动正常启动,外部访问时抛出异常关闭(由全局异常处理)

④问题探究4

  • 目的:探究全局日志配置是否有误(全局日志是否应用)
  • 结论:全局日志配置成功,但是只针对本controller,不针对容器内部异常
  • 总体:打开全局配置日志,打开全局异常捕获
  • 在controller层和@bean都手动抛出异常
  • 启动无法启动,不抛出异常,没有日志
  • 在controller层去掉异常,@bean都手动抛出异常
  • 启动无法启动,不抛出异常(没有日志)
  • 在controller层异常,@bean不抛出异常
  • 启动正常启动,外部访问时抛出异常关闭(由全局异常处理,日志打印)

⑤问题探究5

  • 目的:全局配置日志的配置详解
  • 结论:全局配置日志中logger配置只会打印配置包出现的异常,没配置的包异常都不答应
  • @bean抛出异常
  • 将logger标签设置为org,则会打印日志抛出异常
  • @bean抛出异常
  • 将logger标签设置为com.atguigu,则不会打印日志不会抛出异常(抛出异常也没打印。。)

⑥总结

  • 全局异常处理
    只能处理controller层异常,无法处理IOC容器异常处理
  • logback-spring.xml异常配置
    重点logger的包配置很重要,在于对应包。
    root是默认。即一个类没有指定logger,则用root,指定了logger则用logger。
  • 一个父标签
    cofiguration
  • 两种属性
    contextName:区分不同应用程序
    property 具体的引用配置
  • 三个节点
    logger:配置对应的哪个包下(只有改包下的异常才进入日志!!!)
    root:配置启用那种appender
    appender:追加日志渲染格式

⑦测试

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <!--标志位,区分不同的应用程序-->
    <contextName>atguiguSrb</contextName>

    <!-- 日志的输出目录 -->
    <property name="log.path" value="F:/Project_shangrongbao/java/srb/srb-log/sms" />

    <!--控制台日志格式:彩色日志-->
    <!-- magenta:洋红 -->
    <!-- boldMagenta:粗红-->
    <!-- cyan:青色 -->
    <!-- white:白色 -->
    <!-- magenta:洋红 -->
    <property name="CONSOLE_LOG_PATTERN"
              value="%yellow(%date{yyyy-MM-dd HH:mm:ss}) %highlight([%-5level]) %green(%logger) %msg%n"/>

    <!--文件日志格式-->
    <property name="FILE_LOG_PATTERN"
              value="%date{yyyy-MM-dd HH:mm:ss} [%-5level] %thread %file:%line %logger %msg%n" />

    <!--编码-->
    <property name="ENCODING"
              value="UTF-8" />


    <!-- 控制台日志 -->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>${CONSOLE_LOG_PATTERN}</pattern>
            <charset>${ENCODING}</charset>
        </encoder>
    </appender>

    <!-- 文件日志 -->
    <appender name="FILE" class="ch.qos.logback.core.FileAppender">
        <file>${log.path}/log.log</file>
        <append>true</append>
        <encoder>
            <pattern>${FILE_LOG_PATTERN}</pattern>
            <charset>${ENCODING}</charset>
        </encoder>
    </appender>

    <!--名称即为包名了,其包下面的文件都会被日志记录器管理-->
    <!--file和console都打印-->
    <!--环境配置了此不用配置-->
    <!-- 日志记录器  -->
    <!--<logger name="com.atguigu" level="INFO">-->
        <!--<appender-ref ref="CONSOLE" />-->
        <!--<appender-ref ref="FILE" />-->
    <!--</logger>-->


    <!--设置滚动日志,时间的滚动策略-->
    <appender name="ROLLING_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">

        <!--  要区别于其他的appender中的文件名字  -->
        <file>${log.path}/log-rolling.log</file>
        <encoder>
            <pattern>${FILE_LOG_PATTERN}</pattern>
            <charset>${ENCODING}</charset>
        </encoder>


        <!-- 设置滚动日志记录的滚动策略 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 日志归档路径以及格式 -->
            <fileNamePattern>${log.path}/info/log-rolling-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <!--归档日志文件保留的最大数量-->
            <maxHistory>15</maxHistory>
            <!--包含上size,防止一天的日志文件过大,超过下面的大小,再分-->
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>1024kb</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>

    </appender>

    <!--多环境配置-->
    <!-- 开发环境和测试环境 -->
    <!--name和application.yml配合使用-->
    <springProfile name="dev">
        <logger name="org" level="INFO">
            <appender-ref ref="CONSOLE" />
            <appender-ref ref="FILE" />
        </logger>
    </springProfile>

    <!-- 生产环境 -->
    <!--<springProfile name="prod">-->
        <!--<logger name="org" level="ERROR">-->
            <!--<appender-ref ref="CONSOLE" />-->
            <!--<appender-ref ref="ROLLING_FILE" />-->
        <!--</logger>-->
    <!--</springProfile>-->

    <springProfile name="dev">
        <root level="INFO">
            <appender-ref ref="CONSOLE"/>
            <appender-ref ref="FILE" />
        </root>
    </springProfile>


    <springProfile name="prod">
        <root level="INFO">
            <appender-ref ref="CONSOLE"/>
            <appender-ref ref="FILE" />
        </root>
    </springProfile>
</configuration>

2.localhost,127.0.0.1和本机ip地址的区别

①是否调用网卡

  • 本机ip地址会调用网卡
  • localhost和127.0.0.1会直接转发到本机ip处理

②localhost和127.0.0.1

  • 两者本质相同
  • localhost为域名,127.0.0.1为ip地址
  • 即localhost域名默认指向127.0.0.1

3.nginx反向代理的使用

①实现 利用nginx反向代理

  • 将47.120.40.86:80/的请求转发到47.120.40.86:3000/
    在这里插入图片描述

②nginx动静分离

  • 不容易做。。
  • 前端项目。。。

未更新

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值