我有一些(log4j生成的)日志文件要通过;我知道他们的格式非常好(我的意思是我已经有了可以使用的现成的正则表达式等。)
我想在加载它时自动在VIM中突出显示它们(* .log)。
日志文件条目如下所示:
YYYY-MM-DD HH:MM:ss,SSS [...] #LOG-LEVEL# [...] Message
其中#LOG-LEVEL#是标准'ERROR'之一,'INFO','DEBUG','FATAL'......和'YYYY-MM ......'代表毫秒的日期/时间分辨率。
为了让我开始,在(例如)黄色背景中用蓝色文本突出显示日期字符串所需的步骤 - 以及当文本显示为“错误”时,这应该具有带有白色文本的红色背景
我已经尝试过这方面的一些教程,但是找不到一个很容易理解的教程,所以我在这里做了一些真正的基本步骤!
干杯
编辑: 以下是基于以下说明的内容摘要:
在.vim \ syntax中创建了语法文件'log.vim'(请参阅下面的示例内容)。
在.vim \ ftdetect \ log.vim中创建了一个文件,其中包含以下内容:
au BufRead,BufNewFile * .log set filetype = log
确保我的启动设置中包含以下内容:
语法 文件类型
答案 0 :(得分:30)
定义语法项有三种方法(参见:help :syn-define
):
有各种各样的论点会使事情变得更复杂(与区域内的匹配等有关),请参阅:help :syn-arguments
进行讨论。
优先权生效(见:help :syn-priority
)。
着色由高亮命令控制,与语法命令分开。
一种简单的入门方法是使用匹配来检测日期,使用关键字来检测错误。然后使用高光使颜色变为现实:
" This creates a keyword ERROR and puts it in the highlight group called logError
:syn keyword logError ERROR
" This creates a match on the date and puts in the highlight group called logDate. The
" nextgroup and skipwhite makes vim look for logTime after the match
:syn match logDate /^\d\{4}-\d\{2}-\d\{2}/ nextgroup=logTime skipwhite
" This creates a match on the time (but only if it follows the date)
:syn match logTime /\d\{2}:\d\{2}:\d\{2},\d\{3}/
" Now make them appear:
" Link just links logError to the colouring for error
hi link logError Error
" Def means default colour - colourschemes can override
hi def logDate guibg=yellow guifg=blue
hi def logTime guibg=green guifg=white
在〜/ .vim / syntax / log.vim中填写所有内容并确保文件类型设置正确(请参阅:help filetype.txt
) - 然后应自动加载。
希望这应该给你一些东西。对:help syntax.txt
和:help usr_44.txt
的各个部分进行(逐步)阅读以获取更多信息。
答案 1 :(得分:10)
你可以从
开始syn match group1 /^\d\+-\d\+-\d\+/ nextgroup=group2 skipwhite
syn match group2 /....../ nextgroup=group3 contained skipwhite
syn match group3 /....../ nextgroup=group4 contained skipwhite
hi link group1 Comment
hi link group2 Conditional
hi link group3 Identifier
然后继续尝试
答案 2 :(得分:3)
尝试使用Log4jHighlighter。安装细节出现在github上。
答案 3 :(得分:1)
要使用* .log文件自动加载,您应为此文件类型设置ftplugin。
例如,在我的log.vim
文件夹中的.vim/ftplugin
文件中,我有关于在加载* .log文件时设置键盘快捷键的简单说明。
注意:ftplugins可能不是最好的方法...将语法文件设置为Al描述可能更好。我会在这里留下这个答案,但另一种可能性。
答案 4 :(得分:0)