远程debug调试插件-Remote Log Server With Colorful Log

Remote Log Server With Colorful Log

当我们在一些第三方设备上进行代码编写和调试时,往往不能向本地debug一样,进入调试模式。这样情况下,我们比较常见的方式是打本地日志,但是对于一些第三方设备,我们打了日志但是并不能下载或者查看日志,或者不能实时看到日志的输出内容。

在上述情况下,对于具备Socket通讯的设备,我们可以打远程日志,即通过将日志发送至远端TCP服务器进行显示,可以达到远程日志debug的效果,对于一些脚本编写或者调试阶段来讲,非常好用。

Remote Log Server With Colorful Log是一个VSCode插件,用来在VSCode中进行远程debug调试的插件。

在VSCode中提供一个Socket TCP Server 端口,用于监听客户端的日志,并在输出通道中进行高亮显示;同时提供一个语言模式,提供对已有日志文件的高亮显示。

功能

该插件高亮基于 |进行分割,单行日志中具有4个 |符号,即可进行日志高亮。

日志一般具有时间、日志等级、行号、日志内容等信息,各个框架的默认格式输出都不同,但都可以通过自定义格式化输出。

|在没有颜色高亮的文本中也具有良好的文本分割视觉效果,所以该插件使用 |进行日志高亮,单行文本具有四个 |,就会将文本切分为以下语义,从而进行高亮。

tex 复制代码
Definition:
time | other | level | fileno | msg

Example:
2024-02-03 22:59:47,945 || DEBUG    || this is DEBUG
2024-02-03 22:59:47,945 | client ip:127.0.0.1| ERROR    || this is ERROR
2024-02-03 22:59:47,945 || CRITICAL    | log.py:12 | this is CRITICAL
2024-02-03 22:59:47,945 | client ip:127.0.0.1| WARNING    | log.py:12 | this is WARNING

Remote Log Server

  1. 启动 Remote Log Server(点击下方状态栏的Remote Log Server:启动按钮)
  2. 在输出通道中选中 TCP Log Server Output
  3. 等待客户端链接并发送日志

可以使用以下 Python(Test Version:3.10.10)代码进行测试

python 复制代码
#!/usr/bin/env python3
# coding=utf-8
import logging
import logging.handlers

class RemoteTCPServerLogHandler(logging.StreamHandler):
    """
    """
    def __init__(self, host, port=logging.handlers.DEFAULT_TCP_LOGGING_PORT):
        logging.StreamHandler.__init__(self)
        import socket
        self.client = socket.socket(socket.AF_INET,socket.SOCK_STREAM) 
        self.tcpServerAddr = (host, port) 
        self.client.connect(self.tcpServerAddr)  
        self.stream = self.client.makefile("wr")
        selfIP = self.client.getsockname()[0]
        self.formatter = logging.Formatter("%(asctime)s | " + f"Client IP:{selfIP} | " +"%(levelname)-8s |%(filename)s:%(lineno)-4d | %(message)s")

if __name__ == "__main__":
    import time
    logger = logging.getLogger('socket_logger')
    logger.addHandler(RemoteTCPServerLogHandler("127.0.0.1"))
    logger.setLevel(logging.DEBUG)
    # from loguru import logger
    while 1:
        time.sleep(0.5)
        logger.debug('This is a debug message')
        time.sleep(0.5)
        logger.info('This is an info message')
        time.sleep(0.5)
        logger.warning('This is a warning message')
        time.sleep(0.5)
        logger.error('This is an error message')
        time.sleep(0.5)
        logger.critical('This is a critical message')

Colorful Log Mode

  • 打开日志文件,选择语言模式为 ColorfulLog

如何自定义颜色

在 settings.json中进行编辑

json 复制代码
    "editor.tokenColorCustomizations": {
        "textMateRules": [
            {
                "name": "ColorfulLog.log-time",
                "scope": "ColorfulLog.log-time",
                "settings": {
                    "fontStyle": "",
                    "foreground": "#a5cd70"
                }
            },
            {
                "name": "ColorfulLog.log-other-info",
                "scope": "ColorfulLog.log-other-info",
                "settings": {
                    "fontStyle": "",
                    "foreground": "#0aa344"
                }
            },
            {
                "name": "ColorfulLog.log-level.DEBUG",
                "scope": "ColorfulLog.log-level.DEBUG",
                "settings": {
                    "fontStyle": "bold",
                    "foreground": "#6fc1fa"
                }
            },
            {
                "name": "ColorfulLog.log-level.INFO",
                "scope": "ColorfulLog.log-level.INFO",
                "settings": {
                    "fontStyle": "bold",
                    "foreground": "#acb2be"
                }
            },
            {
                "name": "ColorfulLog.log-level.ERROR",
                "scope": "ColorfulLog.log-level.ERROR",
                "settings": {
                    "fontStyle": "bold",
                    "foreground": "#ed6c72"
                }
            },
            {
                "name": "ColorfulLog.log-level.WARNING",
                "scope": "ColorfulLog.log-level.WARNING",
                "settings": {
                    "fontStyle": "bold",
                    "foreground": "#e5a769"
                }
            },
            {
                "name": "ColorfulLog.log-level.CRITICAL",
                "scope": "ColorfulLog.log-level.CRITICAL",
                "settings": {
                    "fontStyle": "bold underline",
                    "foreground": "#cfe31b"
                }
            },
            {
                "name": "ColorfulLog.log-level.SUCCESS",
                "scope": "ColorfulLog.log-level.SUCCESS",
                "settings": {
                    "fontStyle": "bold",
                    "foreground": "#b1de82"
                }
            },
            {
                "name": "ColorfulLog.log-fileno",
                "scope": "ColorfulLog.log-fileno",
                "settings": {
                    "fontStyle": "",
                    "foreground": "#b0aecf"
                }
            }
        ]
    }

插件配置

在插件配置中搜索 Remote Log Server With Colorful Log

Remote Log Server With Colorful Log: Host为本地TCP服务器的Host地址

Remote Log Server With Colorful Log: Port为本地TCP服务器的Port端口号

本文由mdnice多平台发布

相关推荐
子兮曰3 天前
jev-ultrafast 深度解析:7 秒订机票的浏览器 Agent 是如何炼成的
前端·后端·agent
子兮曰3 天前
Jev 爆发一周:7 秒 Agent 背后的 System One 生态与三场争议
前端·后端·ai编程
爱勇宝3 天前
ZCode 开源 24 小时:一份没有历史的账本,回答不了"有没有偷代码"
前端·后端·chatglm (智谱)
胡写代码3 天前
别再前后端各写一套表单校验了
java·后端
大勇前进3 天前
原生 PHP 还是 Laravel?小项目到底要不要上框架
后端
yuzhi_liu3 天前
我用 LangGraph4j 实现 Multi-Agent Supervisor
后端
alsmile3 天前
Node-RED 之外,国产规则引擎的新方案:基于标准语法,Go 先行实现
后端·开源·go
大白803 天前
PHP 内存溢出排查思路:看懂报错日志,精准定位问题
后端
二月龙3 天前
PHP 接口返回统一响应封装,让前后端对接更省心
后端
盖伦发发3 天前
软件工程SOLID 五大设计原则
后端·软件工程