codekingpro/portable-devtools
114k
1" Vim syntax file2" Language: Generic log file3" Maintainer: Mao-Yining <mao.yining@outlook.com>4" Former Maintainer: MTDL9 <https://github.com/MTDL9>5" Latest Revision: 2025-10-316 7if exists('b:current_syntax')8 finish9endif10 11syntax case ignore12 13" Symbols / special characters14"---------------------------------------------------------------------------15syn match logSymbol display '[!@#$%^&*;:?]'16 17" For Visual Separator and Apache CLF18"---------------------------------------------------------------------------19syn match logSeparator display '-\{3,}\|=\{3,}\|#\{3,}\|\*\{3,}\|<\{3,}\|>\{3,}'20syn match logSeparator display '- - '21 22" Strings23" ------------------------------24syn region logString start=/"/ end=/"/ end=/$/ skip=/\\./ contains=logJavaError25syn region logString start=/`/ end=/`/ end=/$/ skip=/\\./ contains=logJavaError26" Quoted strings, but no match on quotes like `don't`, possessive `s'` and `'s`27syn region logString start=/\(s\)\@<!'\(s \|t \)\@!/ end=/'/ end=/$/ skip=/\\./ contains=logJavaError28 29" Numbers30"---------------------------------------------------------------------------31syn match logNumber display '\<\d\+\>'32syn match logNumberFloat display '\<\d\+\.\d\+\([eE][-+]\=\d\+\)\=\>'33syn match logNumberFloat display '\<\d\+[eE][-+]\=\d\+\>'34syn match logNumberBin display '\<0[bB][01]\+\>'35syn match logNumberOct display '\<0[oO]\o\+\>'36syn match logNumberHex display '\<0[xX]\x\+\>'37 38" Possible hex numbers without the '0x' prefix39syn match logNumberHex display '\<\x\{4,}\>'40 41" Numbers in Hardware Description Languages e.g. Verilog42" These must be placed after logString to ensure they take precedence43syn match logNumber display '\'d\d\+\>'44syn match logNumberBin display '\'b[01]\+\>'45syn match logNumberOct display '\'o\o\+\>'46syn match logNumberHex display '\'h\x\+\>'47 48" Constants49"---------------------------------------------------------------------------50syn keyword logBoolean true false51syn keyword logNull null nil none52 53" Dates and Times54"---------------------------------------------------------------------------55" MM-DD, DD-MM, MM/DD, DD/MM56syn match logDate display '\<\d\{2}[-\/]\d\{2}\>'57" YYYY-MM-DD, YYYY/MM/DD58syn match logDate display '\<\d\{4}[-\/]\d\{2}[-\/]\d\{2}\>'59" DD-MM-YYYY, DD/MM/YYYY60syn match logDate display '\<\d\{2}[-\/]\d\{2}[-\/]\d\{4}\>'61" First half of RFC3339 e.g. 2023-01-01T62syn match logDate display '\<\d\{4}-\d\{2}-\d\{2}T'63" 'Dec 31', 'Dec 31, 2023', 'Dec 31 2023'64syn match logDate display '\<\a\{3} \d\{1,2}\(,\? \d\{4}\)\?\>'65" '31-Dec-2023', '31 Dec 2023'66syn match logDate display '\<\d\{1,2}[- ]\a\{3}[- ]\d\{4}\>'67" Weekday string68syn keyword logDate Mon Tue Wed Thu Fri Sat Sun69" Matches 12:09:38 or 00:03:38.129Z or 01:32:12.102938 +0700 or 01:32:12.1234567890 or 21:14:18+11:0070syn match logTime display '\d\{2}:\d\{2}:\d\{2}\(\.\d\{2,9}\)\?\(\s\?[-+]\(\d\{1,2\}:\d\{2\}\|\d\{2,4}\)\|Z\)\?\>' nextgroup=logTimeZone,logSysColumn skipwhite71" Time zone e.g. Z, +08:00, PST72syn match logTimeZone display 'Z\|[+-]\d\{2}:\d\{2}\|\a\{3}\>' contained skipwhite nextgroup=logSysColumn73" Matches time durations like 1ms or 1y 2d 23ns 3.14s 1.2e4s 3E+20h74syn match logDuration display '\(\(\(\d\+d\)\?\d\+h\)\?\d\+m\)\?\d\+\(\.\d\+\)\?[mun]\?s\>'75 76" Objects77"---------------------------------------------------------------------------78syn match logUrl display '\<https\?:\/\/\S\+'79syn match logMacAddress display '\<\x\{2}\([:-]\?\x\{2}\)\{5}\>'80syn match logIPv4 display '\<\d\{1,3}\(\.\d\{1,3}\)\{3}\(\/\d\+\)\?\>'81syn match logIPv6 display '\<\x\{1,4}\(:\x\{1,4}\)\{7}\(\/\d\+\)\?\>'82syn match logUUID display '\<\x\{8}-\x\{4}-\x\{4}-\x\{4}-\x\{12}\>'83syn match logMD5 display '\<\x\{32}\>'84syn match logSHA display '\<\(\x\{40}\|\x\{56}\|\x\{64}\|\x\{96}\|\x\{128}\)\>'85 86" Only highlight a path which is at the start of a line, or preceded by a space87" or an equal sign (for env vars, e.g. PATH=/usr/bin)88" POSIX-style path e.g. '/var/log/system.log', './run.sh', '../a/b', '~/c'.89syn match logFilePath display '\(^\|\s\|=\)\zs\(\.\{0,2}\|\~\)\/\f\+\ze'90" Windows drive path e.g. 'C:\Users\Test'91syn match logFilePath display '\(^\|\s\|=\)\zs\a:\\\f\+\ze'92" Windows UNC path e.g. '\\server\share'93syn match logFilePath display '\(^\|\s\|=\)\zs\\\\\f\+\ze'94 95" Java Errors96"---------------------------------------------------------------------------97syn match logJavaError '\%(\%(Error\|Exception\):\s*\)\zs\w.\{-}\ze\(\\n\|$\)' contained98 99" Syslog Columns100"---------------------------------------------------------------------------101" Syslog hostname, program and process number columns102syn match logSysColumn '\w\(\w\|\.\|-\)\+ \(\w\|\.\|-\)\+\(\[\d\+\]\)\?:' contained contains=@logLvs,logSysProcess103syn match logSysProcess '\(\w\|\.\|-\)\+\(\[\d\+\]\)\?:' contained contains=logNumber104 105" XML Tags106"---------------------------------------------------------------------------107" Simplified matches, not accurate with the spec to avoid false positives108syn match logXmlHeader /<?\(\w\|-\)\+\(\s\+\w\+\(="[^"]*"\|='[^']*'\)\?\)*?>/ contains=logString,logXmlAttribute,logXmlNamespace109syn match logXmlDoctype /<!DOCTYPE[^>]*>/ contains=logString,logXmlAttribute,logXmlNamespace110syn match logXmlTag /<\/\?\(\(\w\|-\)\+:\)\?\(\w\|-\)\+\(\(\n\|\s\)\+\(\(\w\|-\)\+:\)\?\(\w\|-\)\+\(="[^"]*"\|='[^']*'\)\?\)*\s*\/\?>/ contains=logString,logXmlAttribute,logXmlNamespace111syn match logXmlAttribute contained "\w\+="112syn match logXmlAttribute contained "\(\n\|\s\)\(\(\w\|-\)\+:\)\?\(\w\|-\)\+\(=\)\?" contains=logXmlNamespace113syn match logXmlNamespace contained "\(\w\|-\)\+:"114syn region logXmlComment start=/<!--/ end=/-->/115syn match logXmlCData /<!\[CDATA\[.*\]\]>/116syn match logXmlEntity /&#\?\w\+;/117 118" Levels119"---------------------------------------------------------------------------120syn keyword logLvFatal FATAL121syn keyword logLvEmergency EMERG[ENCY]122syn keyword logLvAlert ALERT123syn keyword logLvCritical CRIT[ICAL]124syn keyword logLvError E ERR[ORS]125syn keyword logLvFail F FAIL[ED] FAILURE126syn keyword logLvFault FAULT127syn keyword logLvNack NACK NAK128syn keyword logLvWarning W WARN[ING]129syn keyword logLvBad BAD130syn keyword logLvNotice NOTICE131syn keyword logLvInfo I INFO132syn keyword logLvDebug D DEBUG133syn keyword logLvTrace TRACE Trace134syn keyword logLvVerbose V VERBOSE135syn keyword logLvPass PASS[ED]136syn keyword logLvSuccess SUCCEED[ED] SUCCESS137 138" Composite log levels e.g. *_INFO139syn match logLvFatal display '\<\u\+_FATAL\>'140syn match logLvEmergency display '\<\u\+_EMERG\(ENCY\)\?\>'141syn match logLvAlert display '\<\u\+_ALERT\>'142syn match logLvCritical display '\<\u\+_CRIT\(ICAL\)\?\>'143syn match logLvError display '\<\u\+_ERR\(OR\)\?\>'144syn match logLvFail display '\<\u\+_FAIL\(URE\)\?\>'145syn match logLvWarning display '\<\u\+_WARN\(ING\)\?\>'146syn match logLvNotice display '\<\u\+_NOTICE\>'147syn match logLvInfo display '\<\u\+_INFO\>'148syn match logLvDebug display '\<\u\+_DEBUG\>'149syn match logLvTrace display '\<\u\+_TRACE\>'150 151syn cluster logLvs contains=logLvFatal,logLvEmergency,logLvAlert,logLvCritical,logLvError,logLvFail,logLvFault,logLvNack,logLvWarning,logLvBad,logLvNotice,logLvInfo,logLvDebug,logLvTrace,logLvVerbose,logLvPass,logLvSuccess152 153" Highlight links154"---------------------------------------------------------------------------155hi def link logNumber Number156hi def link logNumberHex Number157hi def link logNumberBin Number158hi def link logNumberOct Number159hi def link logNumberFloat Float160 161hi def link logBoolean Boolean162hi def link logNull Constant163hi def link logString String164 165hi def link logDate Type166hi def link logTime Operator167hi def link logTimeZone Operator168hi def link logDuration Operator169 170hi def link logUrl Underlined171hi def link logIPV4 Underlined172hi def link logIPV6 Underlined173hi def link logMacAddress Underlined174hi def link logUUID Label175hi def link logMD5 Label176hi def link logSHA Label177hi def link logFilePath Structure178 179hi def link logJavaError ErrorMsg180 181hi def link logSysColumn Statement182hi def link logSysProcess Function183 184hi def link logXmlHeader Function185hi def link logXmlDoctype Function186hi def link logXmlTag Identifier187hi def link logXmlAttribute Type188hi def link logXmlNamespace Include189hi def link logXmlComment Comment190hi def link logXmlCData String191hi def link logXmlEntity Special192 193hi def link logSymbol Delimiter194hi def link logSeparator Comment195 196hi def link logLvFatal ErrorMsg197hi def link logLvEmergency ErrorMsg198hi def link logLvAlert ErrorMsg199hi def link logLvCritical ErrorMsg200hi def link logLvError ErrorMsg201hi def link logLvFail ErrorMsg202hi def link logLvFault ErrorMsg203hi def link logLvNack ErrorMsg204hi def link logLvWarning WarningMsg205hi def link logLvBad WarningMsg206hi def link logLvNotice Exception207hi def link logLvInfo logBlue208hi def link logLvDebug Debug209hi def link logLvTrace Special210hi def link logLvVerbose Special211hi def link logLvPass logGreen212hi def link logLvSuccess logGreen213 214" Custom highlight group215" ------------------------------216hi logGreen ctermfg=LightGreen guifg=LightGreen217hi logBlue ctermfg=LightBlue guifg=LightBlue218 219 220let b:current_syntax = 'log'221 