diff options
-rw-r--r-- | AUTHORS | 1 | ||||
-rw-r--r-- | doc/languages.rst | 5 | ||||
-rw-r--r-- | pygments/lexers/_mapping.py | 1 | ||||
-rw-r--r-- | pygments/lexers/log.py | 59 | ||||
-rw-r--r-- | tests/examplefiles/example.dmesg | 52 |
5 files changed, 118 insertions, 0 deletions
@@ -35,6 +35,7 @@ Other contributors, listed alphabetically, are: * Stéphane Blondon -- SGF lexer * Frits van Bommel -- assembler lexers * Pierre Bourdon -- bugfixes +* Martijn Braam -- Kernel log lexer * Matthias Bussonnier -- ANSI style handling for terminal-256 formatter * chebee7i -- Python traceback lexer improvements * Hiram Chirino -- Scaml and Jade lexers diff --git a/doc/languages.rst b/doc/languages.rst index f9492525..03e6f1cc 100644 --- a/doc/languages.rst +++ b/doc/languages.rst @@ -201,6 +201,11 @@ Template languages * Tea * `Twig <http://twig.sensiolabs.org/>`_ +Log files +--------- + +* Linux kernel log (dmesg) + Other markup ------------ diff --git a/pygments/lexers/_mapping.py b/pygments/lexers/_mapping.py index 1ed7140d..8a09ea2b 100644 --- a/pygments/lexers/_mapping.py +++ b/pygments/lexers/_mapping.py @@ -233,6 +233,7 @@ LEXERS = { 'JuttleLexer': ('pygments.lexers.javascript', 'Juttle', ('juttle', 'juttle'), ('*.juttle',), ('application/juttle', 'application/x-juttle', 'text/x-juttle', 'text/juttle')), 'KalLexer': ('pygments.lexers.javascript', 'Kal', ('kal',), ('*.kal',), ('text/kal', 'application/kal')), 'KconfigLexer': ('pygments.lexers.configs', 'Kconfig', ('kconfig', 'menuconfig', 'linux-config', 'kernel-config'), ('Kconfig', '*Config.in*', 'external.in*', 'standard-modules.in'), ('text/x-kconfig',)), + 'KernelLogLexer': ('pygments.lexers.log', 'Kernel log', ('kmsg', 'dmesg'), ('*.kmsg', '*.dmesg'), ()), 'KokaLexer': ('pygments.lexers.haskell', 'Koka', ('koka',), ('*.kk', '*.kki'), ('text/x-koka',)), 'KotlinLexer': ('pygments.lexers.jvm', 'Kotlin', ('kotlin',), ('*.kt',), ('text/x-kotlin',)), 'LSLLexer': ('pygments.lexers.scripting', 'LSL', ('lsl',), ('*.lsl',), ('text/x-lsl',)), diff --git a/pygments/lexers/log.py b/pygments/lexers/log.py new file mode 100644 index 00000000..4f651bf2 --- /dev/null +++ b/pygments/lexers/log.py @@ -0,0 +1,59 @@ +# -*- coding: utf-8 -*- +""" + pygments.lexers.log + ~~~~~~~~~~~~~~~~~~~~~ + + Lexers for various log file formats. + + :copyright: Copyright 2006-2019 by the Pygments team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +from pygments.lexer import RegexLexer, include +from pygments.token import * + +__all__ = ['KernelLogLexer'] + + +class KernelLogLexer(RegexLexer): + name = 'Kernel log' + aliases = ['kmsg', 'dmesg'] + filenames = ['*.kmsg', '*.dmesg'] + + tokens = { + 'root': [ + (r'^(?=\[)', Text, 'unknown'), + (r'^([^:]+):debug\s*: (?=\[)', Text, 'debug'), + (r'^([^:]+):info\s*: (?=\[)', Text, 'info'), + (r'^([^:]+):warn\s*: (?=\[)', Text, 'warn'), + (r'^([^:]+):notice\s*: (?=\[)', Text, 'warn'), + (r'^([^:]+):err\s*: (?=\[)', Text, 'error'), + (r'^([^:]+):crit\s*: (?=\[)', Text, 'error'), + ], + 'unknown': [ + (r'^(?=.+(warning|notice|audit|deprecated))', Text, 'warn'), + (r'^(?=.+(error|critical|fail|Bug))', Text, 'error'), + (r'', Text, 'info'), + ], + 'base': [ + (r'\[[0-9\. ]+\] ', Number), + (r'(?<=\] ).+?:', Keyword), + (r'\n', Text, '#pop'), + ], + 'debug': [ + include('base'), + (r'.+\n', Text, '#pop') + ], + 'info': [ + include('base'), + (r'.+\n', Text, '#pop') + ], + 'warn': [ + include('base'), + (r'.+', Comment, '#pop') + ], + 'error': [ + include('base'), + (r'.+\n', Generic.Error, '#pop') + ] + } diff --git a/tests/examplefiles/example.dmesg b/tests/examplefiles/example.dmesg new file mode 100644 index 00000000..f023ff20 --- /dev/null +++ b/tests/examplefiles/example.dmesg @@ -0,0 +1,52 @@ +[ 0.000000] Linux version 5.0.9-arch1-1-ARCH (builduser@heftig-18307) (gcc version 8.3.0 (GCC)) #1 SMP PREEMPT Sat Apr 20 15:00:46 UTC 2019 +[ 0.000000] Command line: initrd=\initramfs-linux.img root=/dev/nvme0n1p1 nouveau.noaccel=1 rw +[ 0.000000] KERNEL supported cpus: +[ 0.000000] Intel GenuineIntel +[ 0.000000] AMD AuthenticAMD +[ 0.000000] Hygon HygonGenuine +[ 0.000000] Centaur CentaurHauls +[ 0.000000] x86/fpu: Supporting XSAVE feature 0x001: 'x87 floating point registers' +[ 0.000000] x86/fpu: Supporting XSAVE feature 0x002: 'SSE registers' +[ 0.000000] x86/fpu: Supporting XSAVE feature 0x004: 'AVX registers' +[ 0.000000] x86/fpu: Supporting XSAVE feature 0x008: 'MPX bounds registers' +[ 0.000000] x86/fpu: Supporting XSAVE feature 0x010: 'MPX CSR' +[ 0.000000] x86/fpu: xstate_offset[2]: 576, xstate_sizes[2]: 256 +[ 0.000000] x86/fpu: xstate_offset[3]: 832, xstate_sizes[3]: 64 +[ 0.000000] x86/fpu: xstate_offset[4]: 896, xstate_sizes[4]: 64 +[ 0.000000] x86/fpu: Enabled xstate features 0x1f, context size is 960 bytes, using 'compacted' format. +[ 2.663456] tpm_crb MSFT0101:00: [Firmware Bug]: ACPI region does not cover the entire command/response buffer. [mem 0xfed40000-0xfed4087f flags 0x200] vs fed40080 f80 +[ 2.663514] tpm_crb MSFT0101:00: [Firmware Bug]: ACPI region does not cover the entire command/response buffer. [mem 0xfed40000-0xfed4087f flags 0x200] vs fed40080 f80 +[ 2.664809] Bluetooth: Core ver 2.22 +[ 2.664820] NET: Registered protocol family 31 +[ 3134.452501] usb 2-2: new SuperSpeed Gen 1 USB device number 2 using xhci_hcd +[ 3134.471506] usb 2-2: New USB device found, idVendor=0781, idProduct=cfd2, bcdDevice= 0.02 +[ 3134.471508] usb 2-2: New USB device strings: Mfr=3, Product=4, SerialNumber=2 + +kern :notice: [ 0.000000] Linux version 5.0.9-arch1-1-ARCH (builduser@heftig-18307) (gcc version 8.3.0 (GCC)) #1 SMP PREEMPT Sat Apr 20 15:00:46 UTC 2019 +kern :info : [ 0.000000] Command line: initrd=\initramfs-linux.img root=/dev/nvme0n1p1 nouveau.noaccel=1 rw +kern :info : [ 0.000000] KERNEL supported cpus: +kern :info : [ 0.000000] Intel GenuineIntel +kern :info : [ 0.000000] AMD AuthenticAMD +kern :info : [ 0.000000] Hygon HygonGenuine +kern :info : [ 0.000000] Centaur CentaurHauls +kern :info : [ 0.000000] x86/fpu: Supporting XSAVE feature 0x001: 'x87 floating point registers' +kern :info : [ 0.000000] x86/fpu: Supporting XSAVE feature 0x002: 'SSE registers' +kern :info : [ 0.000000] x86/fpu: Supporting XSAVE feature 0x004: 'AVX registers' +kern :info : [ 0.000000] x86/fpu: Supporting XSAVE feature 0x008: 'MPX bounds registers' +kern :info : [ 0.000000] x86/fpu: Supporting XSAVE feature 0x010: 'MPX CSR' +kern :info : [ 0.000000] x86/fpu: xstate_offset[2]: 576, xstate_sizes[2]: 256 +kern :info : [ 0.000000] x86/fpu: xstate_offset[3]: 832, xstate_sizes[3]: 64 +kern :info : [ 0.000000] x86/fpu: xstate_offset[4]: 896, xstate_sizes[4]: 64 +kern :info : [ 0.000000] x86/fpu: Enabled xstate features 0x1f, context size is 960 bytes, using 'compacted' format. +kern :info : [ 0.000000] BIOS-provided physical RAM map: +kern :info : [ 0.000000] BIOS-e820: [mem 0x0000000000000000-0x0000000000057fff] usable +kern :info : [ 2.382262] EXT4-fs (nvme0n1p1): re-mounted. Opts: (null) +kern :notice: [ 2.389774] random: systemd-random-: uninitialized urandom read (512 bytes read) +kern :info : [ 2.397148] usb 1-10: New USB device found, idVendor=8087, idProduct=0aa7, bcdDevice= 0.01 +kern :info : [ 2.397150] usb 1-10: New USB device strings: Mfr=0, Product=0, SerialNumber=0 +kern :info : [ 2.519599] usb 1-12: new high-speed USB device number 4 using xhci_hcd +kern :crit : [18706.135478] mce: CPU6: Package temperature above threshold, cpu clock throttled (total events = 79) +kern :crit : [18706.135479] mce: CPU3: Package temperature above threshold, cpu clock throttled (total events = 79) +kern :crit : [18706.135484] mce: CPU4: Package temperature above threshold, cpu clock throttled (total events = 79) +kern :info : [18706.136450] mce: CPU4: Core temperature/speed normal +kern :info : [18706.136451] mce: CPU1: Package temperature/speed normal |