通過する(log4jで生成された)ログファイルがいくつかあります。私はそれらのフォーマットをかなりよく知っています(つまり、私はすでに使用できるオフザペグのregexesなどを持っています)。
それらをロードするときに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
以下が私のスタートアップ設定にあることを確認してください:
ファイルタイプの構文
構文項目を定義する方法は3つあります(:help :syn-define
を参照)。
物事をより複雑にするさまざまな引数があります(リージョン内の一致など)。これについては、:help :syn-arguments
を参照してください。
有効になる優先順位があります(:help :syn-priority
を参照)。
色付けはhighlightコマンドによって制御され、構文コマンドとは別のものです。
開始する簡単な方法は、一致を使用して日付を検出し、キーワードを使用してエラーを検出することです。次に、ハイライトを使用して色を生き生きとさせます。
" 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
のさまざまなセクションを(非常に段階的に)読んでください。
あなたはから始めることができます
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
その後、実験を続けます
Log4jHighlighter を使用してみてください。インストールの詳細はgithubにあります。
このハイライトスタイルは私にぴったりです。
https://github.com/dzeban/vim-log-syntax
著者(@AlexanderDzyoba)は、「メッセージ」構文の強調表示ファイルに基づいていると述べています。