当前位置: 首页 > article >正文

monaco-editor/react 自定义高亮

前言

最近需要用 monaco-editor/react 自定义高亮日志信息,记录一下。
这是日志开始的样子,比较丑
在这里插入图片描述
这是日志改造后的样子
在这里插入图片描述

步骤

贴一下相关代码

<Editor
   loading={loading}
   value={logList.join('\n')}
   height="500px"
   onMount={handleEditorDidMount} // 加上初始化
   options={{
     minimap: { enabled: false },
     scrollBeyondLastLine: false,
     automaticLayout: true,
     readOnly: true,
     padding: { top: 10, bottom: 20 },
     wordWrap: 'on',
   }}
/>

加上初始化以后,只需要简单再写个初始化函数即可

// 编辑器初始化时设置高亮
  const handleEditorDidMount = (editorInstance: any, monaco: any) => {
    setEditor(editorInstance);

    // 注册新语言
    monaco.languages.register({ id: 'log-language' });

    // 定义标记提供者
    monaco.languages.setMonarchTokensProvider('log-language', {
      tokenizer: {
        root: [
          // 匹配时间戳格式 [YYYY-MM-DD HH:MM:SS]
          [/\[\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}\]/, 'timestamp'],
          // 匹配INFO, ERROR, WARNING等日志级别
          [/\b(INFO|ERROR|WARNING|DEBUG)\b/, 'loglevel'],
        ],
      },
    });

    // 设置主题
    monaco.editor.defineTheme('log-theme', {
      base: 'vs-dark',
      inherit: true,
      rules: [
        { token: 'timestamp', foreground: '#a0cded', fontStyle: 'bold' },
        { token: 'loglevel', foreground: '#00a700' },
      ],
      colors: {},
    });

    // 应用主题和语言
    monaco.editor.setTheme('log-theme');
    editorInstance.getModel().setLanguage('log-language');
  };

需要什么规则,先将其正则匹配出来并标记为 tokenizer,然后样式直接往 rules 里塞就行。


http://www.kler.cn/a/580472.html

相关文章:

  • vue+dhtmlx-gantt 实现甘特图-快速入门【甘特图】
  • 天梯选拔赛赛后补题
  • Unet实战分割项目:深度学习与医学影像分析
  • 大语言模型 (LLM) 基础知识
  • Docker搭建Redis哨兵模式【一主两从三哨兵】
  • 关于统计建模大赛的选题
  • 项目上传到Gitee过程
  • 阿里灵犀互娱游戏界面设计(GUI)岗内推-上海
  • Ae 效果详解:VR 颜色渐变
  • Chrome 扩展开发 API实战:Cookies(一)
  • 前端面试题 口语化复述解答(从2025.3.8 开始频繁更新中)
  • linux wifi driver深度实践之内核编译加载
  • Go语言分布式ID生成策略优选:UUID、Snowflake、XID、ObjectID、Krand性能对比评测
  • 前端杂的学习笔记
  • 字符串习题
  • 实战案例分享:Android WLAN Hal层移植(MTK+QCA6696)
  • 字节跳动C++客户端开发实习生内推-抖音基础技术
  • Qt学习笔记 TableWidget使用说明和增删改操作的实现
  • leetcode 624. 数组列表中的最大距离 中等
  • 大语言模型学习--向量数据库基础知识