为什么需要本地化调试
现代的软件开发都是多人协作,基于git进行多分支同步开发,共享一套开发测试环境。在这样的环境下,开发测试环境是存在竞争,发布的镜像也可能会冲突;本地开发的业务代码也可能与他人的代码有合并冲突;
业务逻辑代码设计不完善,实现不优雅,潜在多种逻辑漏洞的,又必须进行多轮的完整性的业务逻辑测试;
因此,进行业务测试需要经过整体项目代码合并,解决冲突,竞争编译环境资源,竞争发布的测试环境;这种测试过程,涉及的操作节点众多,各种环节的服务不正常,都会极大地降低了开发的效率,另外远程服务无法断点调试,导致定位逻辑错误只能通过测试日志的反复优化删除等,都加大了开发的难度,降低了整体开发效率。
什么是本地化调试
Alogic框架是一款基于Ketty容器的高效的,可扩展的,轻量级WEB服务框架。而Ketty是基于Jetty进行高度定制的一套web服务容器,因此可以通过配置多套环境的配置脚本,实现本地化Maven插件式运行,继而实现本地化的断点调试。
如何配置本地化调试
加入Maven的jetty插件
加入日志框架的配置文件
下载ketty容器的运行环境,整个可运行的zip包
调整Web.xml 的配置,加入ketty的配置文件路径
jetty插件:修改POM
<plugin>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>9.4.38.v20210224</version>
<configuration>
<httpConnector>
<port>8180</port>
</httpConnector>
<scanIntervalSeconds>-1</scanIntervalSeconds>
<reload>manual</reload>
<useTestScope>true</useTestScope>
<supportedPackagings>jar</supportedPackagings>
<webAppConfig>
<resourceBase>${project.basedir}/src/main/resources/</resourceBase>
<resourceBase>${project.basedir}/src/test/resources/</resourceBase>
<resourceBase>${project.basedir}/src/main/webapp/META-INF/</resourceBase>
<!-- <resourceBase>${project.basedir}/src/main/webapp/META-INF/resources</resourceBase>-->
</webAppConfig>
</configuration>
</plugin>
日志实现:修改src/test/resources/logback.xml
<?xml version="1.0" encoding="utf-8"?>
<configuration scan="true" scanPeriod="60 seconds">
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>[%d{MMddHHmmss.SSS}] %-5level-%msg%n</pattern>
</encoder>
</appender>
<logger name="TLog0" level="INFO" additivity="false">
<appender-ref ref="tlog" />
</logger>
<logger name="org.apache.zookeeper" level="ERROR">
</logger>
<logger name="com.jayway.jsonpath.JsonPath" level="INFO"/>
<root level="DEBUG">
<appender-ref ref="console" />
</root>
</configuration>
Ketty服务配置
下载ketty包:使用源码编译,打包出来的zip,解压到
D:/alogic-ketty-server-22.2.4
配置Alogic项目中的src/main/webapp/WEB-INF/web.xml
更换配置中个的
${ketty.home} 为本地实际项目路径
修改 ketty服务目录中的配置文件,
ketty.web.xml的动态路径为本地化路径
运行本地环境
至此,本地化服务已经跑起来,可以随意进行本地化调试