You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在Notepad++自定义语言设置中实现含NLog关键字的整行日志着色?

如何在Notepad++自定义语言设置中实现含NLog关键字的整行日志着色?

嗨,我完全懂你的痛点!看日志的时候只高亮个关键字根本不够,整行着色才是真的能快速区分日志级别的正确打开方式。可惜Notepad++自带的自定义语言(UDL)系统确实做不到直接匹配关键字后高亮整行——它的规则都是针对文本片段的,没法覆盖整行内容。不过别慌,咱们有几个靠谱的变通方案:

方案一:半自动化标记(适合临时查看日志)

这个方法用Notepad++自带的功能就能实现,不用装插件:

  • 打开你的NLog日志文件,按Ctrl+F调出搜索框,切换到「Mark」标签页
  • 在「Find what」里输入正则表达式^.*Debug.*$(这个规则会匹配整行包含Debug的内容),如果要匹配其他关键字,把Debug换成Error/Warn/Info/Fatal就行
  • 勾选「Bookmark line」和「Purge for each search」,点击「Mark All」,所有包含目标关键字的行都会被加上书签
  • 接着去「Settings > Style Configurator > Global Styles > Bookmark line」,调整这里的前景色、背景色,就能给所有书签行上色
  • 要是需要同时高亮多个关键字,重复上面的步骤给每个关键字对应的行加书签就行;最后还能通过「File > Save Session」把标记状态保存下来,下次打开日志直接加载会话

方案二:Python脚本实现自动整行高亮(适合长期使用)

如果经常需要看NLog日志,写个小脚本就能实现自动整行着色:

  1. 先安装Python Script插件:打开Notepad++,去「Plugins > Plugins Admin」搜索Python Script并安装
  2. 安装完成后,点击「Plugins > Python Script > New Script」,创建一个名为NLogLineHighlighter.py的脚本文件
  3. 把下面的代码粘贴进去:
import re
from Npp import *

def highlight_nlog_lines():
    # 定义关键字对应的高亮颜色(格式:(红, 绿, 蓝, 透明度),透明度255为不透明)
    keyword_color_map = {
        'Debug': (0, 0, 0, 255),       # 黑色文字 + 白色背景
        'Info': (0, 145, 0, 255),      # 绿色文字 + 浅蓝背景
        'Error': (255, 0, 0, 255),     # 红色文字 + 浅红背景
        'Warn': (128, 64, 0, 255),     # 棕色文字 + 浅黄背景
        'Fatal': (0, 120, 179, 255)    # 蓝色文字 + 浅青背景
    }
    
    # 清除之前的高亮标记
    editor.markerDeleteAll()
    
    # 遍历每一行日志
    total_lines = editor.getLineCount()
    for line_num in range(total_lines):
        line_content = editor.getLine(line_num).strip()
        # 检查当前行是否包含目标关键字
        for keyword, color in keyword_color_map.items():
            if keyword in line_content:
                # 给该行添加标记,并设置对应颜色
                marker_id = list(keyword_color_map.keys()).index(keyword) + 1
                editor.markerAdd(line_num, marker_id)
                # 转换颜色格式为Notepad++识别的ARGB
                argb_color = color[3] << 24 | color[2] << 16 | color[1] << 8 | color[0]
                editor.markerSetBack(marker_id, argb_color)
                break

# 执行高亮函数
highlight_nlog_lines()
  1. 保存脚本后,去「Plugins > Python Script > Configuration」,把这个脚本添加到「Menu Items」里,还可以设置一个专属快捷键(比如F5)
  2. 以后打开NLog日志,按下快捷键就能自动给对应关键字的整行上色了

备选方案:用专用插件简化操作

如果你不想写脚本,可以试试Line Highlighter插件——在Plugins Admin里搜索就能找到。它支持直接设置关键字和对应的整行颜色,操作比脚本更直观,不过要注意部分Notepad++新版本可能存在兼容性问题,可以多试试几个版本。

至于你之前写的UDL XML文件,它只能针对单个关键字着色,没法扩展到整行,所以如果要实现整行高亮的需求,上面的方法会更实用。

备注:内容来源于stack exchange,提问作者Dominique

火山引擎 最新活动