【问题标题】:Highlighting log of threaded application突出显示线程应用程序的日志
【发布时间】:2011-08-02 13:28:58
【问题描述】:

我有多线程应用程序的日志文件。每行都有一个众所周知的格式(例如,第三个字段是线程 ID)。而其中一个字段是线程ID。我希望我不是想重新发明轮子:)

无论如何,为了方便阅读文件,我想到了两个可以提供帮助的选项:

  1. 突出显示与当前行具有相同线程 ID 的所有行。

  2. 如果按下某个键,则所有具有其他线程 ID 的行都将折叠,再次按下该键会展开这些行。

欢迎为这两个项目提供骨架。

【问题讨论】:

  • 好主意,但我在这里只看到陈述句。你有什么问题?
  • 实际上我正在寻找一种方法来实现这两个描述的项目,因为 vim 在远程连接上运行良好。
  • 日志格式对grep友好吗?
  • 是的。我可以编写正则表达式来识别属于同一线程 id 的所有行

标签: vim syntax-highlighting folding logfiles


【解决方案1】:

按图案突出显示

这是一个突出显示(以及清除)包含给定模式的所有行的功能,并在模式本身上突出显示。 “最后一次搜索”寄存器@/ 也设置为请求的模式,因此n/N,在正常模式下,通过匹配行向前/向后跳转。 <Leader>l(在大多数安装中相当于\l)是一种快捷方式,用于突出显示光标下包含WORD 的行。

highlight def link xHiLine Special
highlight def link xHiPatt String

function! ClearHighlight()
    syn clear xHiLine
    syn clear xHiPatt
    let @/ = ''
endfunction

function! HighlightPattern(patt)
    call ClearHighlight()
    if a:patt != ''
        echo "Highlighting pattern: ".a:patt
        exec "syn match xHiPatt \"".a:patt."\" contained"
        exec "syn match xHiLine \".*".a:patt.".*\" contains=xHiPatt"
        let @/ = a:patt
    endif
endfunction

map <Leader>l :call HighlightPattern(expand("<cWORD>"))<CR>
map <Leader>c :call ClearHighlight()<CR>

按图案折叠

有关基于模式的折叠示例,请查看Show-Hide Vim plug-in。它提供了两个命令,SHOWHIDE,以及一些快捷方式。例如,:SHOW thread=1234 将折叠除包含 thread=1234 的行之外的所有行,而在正常模式下 zs 将在光标下显示包含 word 的行。 [您可能想要创建一个备用映射,例如zS,以使用&lt;cWORD&gt; 而不是&lt;cword&gt;。]

建筑模式

如果&lt;cword&gt;&lt;cWORD&gt; 都没有提取出足够独特的过滤器模式(或避免将光标移动到正确的字段),请创建另一个类似下面的函数并从地图中调用它。

function! GetField(num)
    let toks = split(getline('.'))
    if len(toks) >= a:num
        return toks[a:num-1]
    endif
    return ''
endfunction

map <Leader>hl :call HighlightPattern(GetField(3))<CR>
map <Leader>fl :exec "SHOW ".GetField(3)<CR>

【讨论】:

    【解决方案2】:

    您基本上要寻找的是建立在您的日志文件之上的外部机制。 Chainsaw 正在为基于 log4j 的日志执行此操作: http://logging.apache.org/chainsaw/index.html

    不确定您的日志记录应用程序是什么,但您可能应该看看那个方向。

    【讨论】:

    • 看起来很有趣,但它是基于 GUI 的。我们的支持在慢速远程连接上工作了很多次,所以我对基于控制台的解决方案也很感兴趣。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-22
    • 1970-01-01
    • 1970-01-01
    • 2015-04-02
    • 2014-04-11
    • 1970-01-01
    • 2021-10-25
    相关资源
    最近更新 更多