项目问题
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" />
<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>
<appender name="ROLLING_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<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>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>1024kb</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
</appender>
<springProfile name="dev">
<logger name="org" level="INFO">
<appender-ref ref="CONSOLE" />
<appender-ref ref="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/
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/5659f0b986b16a13ead22c0b9533ee5a.png)
②nginx动静分离
未更新