01. Springboot集成magic-api

文章介绍了如何在Springboot项目中集成magic-api,通过添加maven依赖、配置application.yml、编写测试接口等步骤实现日志级别的动态调整,避免因日志输出导致的IO阻塞问题。此外,还提到了magic-api的其他功能和安全注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1、前言

2、springboot集成magic-api

2.1、添加maven依赖

2.2、application.yml配置

2.3、编写测试接口

2.4、启动程序,访问接口

2.5、magic-api脚本

3、magic-api其他语法

4、注意事项


1、前言

今天项目中遇到一个问题,springboot后端项目经常使用log4j输出日志,同时会配置相应日志级别。但是由于开发过程中不经意间都会log.info("xxxx")来打印日志,而线上级别也会控制在info级别。正常不会有什么问题,但是今天有个超长报文传输,恰好日志在控制台输出了这段报文用作跟踪。而log并没有开启缓存以及并行写入,导致IO阻塞,程序无法正常响应。

通常情况下,这种问题的解决措施为:

  1. 直接重启程序
  2. 使用arths动态调整日志级别

arths是个好工具,很适合用于线上排障,应对该场景也可以直接动态调整log级别,而不需要重启服务器。那么今天再介绍另一个可以动态调整日志级别的工具,magic-api。magic-api

2、springboot集成magic-api

2.1、添加maven依赖

<dependency>    
    <groupId>org.ssssssss</groupId>    
    <artifactId>magic-api-spring-boot-starter</artifactId>    
    <version>2.1.0</version>
</dependency>

其他springboot的相关依赖就不赘述了。

2.2、application.yml配置

magic-api:
  web: /magic/web    # magic-api控制台访问地址
  resource:          # magic-api数据存储信息配置
    location: workspace/magic/data      # location表示使用本地文件存储,存储路径为工作目录workspace/magic/data下
    datasource:        # datasource表示数据源存储,这里指定使用的数据源, datasource和location选择一个
    

2.3、编写测试接口

@Slf4j
@RestController
@RequestMapping("test")
public class TestController {

    @GetMapping("index")
    public String index(){
        //  trace 级别日志        
        LOGGER.trace("-------trace------");

        //  debug 级别日志        
        LOGGER.debug("-------debug------");

        //  info 级别日志        
        LOGGER.info("-------info------");

        //  warn 级别日志        
        LOGGER.warn("-------warn------");

        //  error 级别日志        
        LOGGER.error("-------error------");
        return "ok";
    }

}

2.4、启动程序,访问接口

当看到控制台输出如下信息,就是已经启动成功了。

访问接口:http://localhost:8083/test/index。可以看到日志打印:

由于默认日志级别是info,所以看到info以上级别的输出。

2.5、magic-api脚本

打开magic-api控制台:http://192.168.0.109:8083/magic/web/index.html

左侧菜单栏选择接口,接着空白处右键创建分组:

 

创建完分组后,创建接口:

创建后,在return "Hello magic-api"编辑框内使用如下脚本:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import ch.qos.logback.classic.Level;
import ch.qos.logback.classic.LoggerContext;

var levelName = "debug";
var packageName = "com.xxx";

LoggerFactory.getILoggerFactory().getLogger(packageName).setLevel(Level.toLevel(levelName));

return "OK";

由于springboot中使用了lombok,使用了默认的logback,所以这里的impor实现类需要找对。不然没有效果。

输入后,点击右上角的运行按钮。运行完可以再次访问测试接口地址。

可以看到日志级别调整为debug,而程序不用重启。

3、magic-api其他语法

magic-api其实是通过JVM的script语言注入进去,提供了其他丰富的功能。这里不赘述,也需要慢慢使用体会。其他的特性语法可以参考文档:

简介 | magic-api

这里只是抛砖引玉而已。

4、注意事项

使用magic-api的时候需要注意,正因为如此方便的功能和特性,如果贸然线上使用该插件,很容易导致被人而已攻击注入。所以尽可能避免外网访问,我们的处理措施是ng代理上直接不对外暴露,仅限于内部研发排障使用。

相比这种需要集成在代码中的使用方式,arths可能具有天然的优势,但是magic-api也有其特长,可以双管齐下,取长补短吧。

<think>好的,我需要回答用户关于MagicGrid方法的使用方法和技术文档的问题。首先,用户提到了达索公司收购了No Magic,并提到了MagicGrid的1.0和2.0版本。根据提供的引用[^1],我需要围绕这个来源展开。 首先,我需要确认MagicGrid的基本信息。MagicGrid是一种基于SysML的系统工程方法,用于复杂系统的建模与分析。用户想知道使用方法和文档,可能需要分步骤说明,并引导他们查找官方资源。 接下来,我应该列出使用方法的步骤。比如安装工具、学习基础、创建模型等。同时,技术文档方面,需要提到达索的官方支持,比如Help Center和社区论坛,可能还有培训资源。 要注意引用格式,在提到达索公司的资源时添加[^1]。此外,用户可能对具体操作有疑问,所以相关问题可以涉及学习路径、工具集成、实际案例以及版本差异。 需要确保回答结构清晰,分点说明,并且语言自然。避免使用Markdown格式,保持口语化,但正式的回答内容。最后检查是否符合用户要求,比如中文回答、引用标注正确等。</think>MagicGrid是由达索系统公司(通过收购No Magic)提出的基于SysML的系统工程方法,主要用于复杂系统建模与分析。以下是使用方法和文档获取途径的说明: ### 一、MagicGrid核心使用方法 1. **工具安装与配置** - 需使用达索的Cameo Systems Modeler或MagicDraw工具 - 在新建项目时选择"MagicGrid Framework"模板 2. **四层建模框架** $$ \begin{cases} \text{需求层} & (Requirement\ Layer) \\ \text{功能层} & (Function\ Layer) \\ \text{逻辑层} & (Logical\ Layer) \\ \text{物理层} & (Physical\ Layer) \end{cases} $$ 每层通过$trace\ dependency$建立关联关系 3. **关键操作流程** - 需求分解:使用$requirement\ diagram$进行需求追踪 - 功能建模:通过$activity\ diagram$定义系统功能流 - 架构设计:在$block\ definition\ diagram$中构建系统组件 ### 二、技术文档获取途径 1. **官方资源** - 达索Help Center提供《MagicGrid Method Guide》电子手册[^1] - Cameo Systems Modeler内置教程模块(Help > Tutorials) 2. **学习资源推荐** - MagicGrid 2.0白皮书(官网下载) - No Magic原厂培训视频(需企业账号) - 《Systems Engineering with MagicGrid》参考书(ISBN:978-1-7357360-0-6) 3. **社区支持** - 达索3DEXPERIENCE论坛的MBSE板块 - 国际系统工程协会(INCOSE)技术文档库
评论 56
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

有一只柴犬

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值