Log level mapper
Pick a level in one logging system (syslog, the Linux kernel, Cisco IOS, Junos, Windows Event Log, .NET, Python, java.util.logging, Log4j 2, OpenTelemetry) and read its nearest equivalent in every other, with each system's own number and words, where the match is exact and where it is only the nearest rung. The bridge is OpenTelemetry's SeverityNumber, the one scale defined to hold the others. Nothing is sent anywhere.
Operations & Fieldcraftsyslog (RFC 5424): Warning (4) SeverityNumber 13 (WARN), in the WARN range. warning conditions
The nearest level in every other system
| system | level | its own number | match |
|---|---|---|---|
| Linux kernel (printk) | KERN_WARNING | 4 | exact |
| Cisco IOS (logging) | warnings | 4 | exact |
| Junos (system syslog) | warning | no number | exact |
| Windows Event Log | Warning | 3 | exact |
| .NET (Microsoft.Extensions.Logging) | Warning | 3 | exact |
| Python (logging) | WARNING | 30 | exact |
| Java (java.util.logging) | WARNING | 900 | exact |
| Log4j 2 | WARN | 300 | exact |
| OpenTelemetry (SeverityNumber) | WARN | 13 | exact |
Distances are in SeverityNumber steps (1 to 24). Each ladder is placed on the scale by its own documentation or by OpenTelemetry's example mapping (Data Model Appendix B); where two rungs of a system are equally near, both are shown.
Every ladder, on the one scale
| system | its numbers | levels, most severe first, each with its own number and its SeverityNumber |
|---|---|---|
| syslog (RFC 5424) | shrink with severity | Emergency 0 →21Alert 1 →19Critical 2 →18Error 3 →17Warning 4 →13Notice 5 →10Informational 6 →9Debug 7 →5 0 is the most severe; eight levels, three of them (Emergency, Alert, Critical) above most other ladders' top. |
| Linux kernel (printk) | shrink with severity | KERN_EMERG 0 →21KERN_ALERT 1 →19KERN_CRIT 2 →18KERN_ERR 3 →17KERN_WARNING 4 →13KERN_NOTICE 5 →10KERN_INFO 6 →9KERN_DEBUG 7 →5 Eight levels named and numbered like syslog's severities, written as strings in the message prefix; placed on the scale by that correspondence of name and number. KERN_DEFAULT (no prefix) and KERN_CONT ("c") are not levels. |
| Cisco IOS (logging) | shrink with severity | emergencies 0 →21alerts 1 →19critical 2 →18errors 3 →17warnings 4 →13notifications 5 →10informational 6 →9debugging 7 →5 Syslog's numbers with Cisco's keywords; the command reference maps each to its LOG_* constant; the default buffered level is generally 7. |
| Junos (system syslog) | no numbers | emergency →21alert →19critical →18error →17warning →13notice →10info →9any →0none →0 Names only on Juniper's page, in syslog's order from emergency to info; "any" selects every level and "none" disables logging; there is no named debug rung. |
| Windows Event Log | shrink with severity | Critical 1 →18Error 2 →17Warning 3 →13Informational 4 →9Verbose 5 →5LogAlways 0 →0 1 is the most severe; 0 (LogAlways) is not a level; custom levels 16 to 255 are provider-defined. |
| .NET (Microsoft.Extensions.Logging) | grow with severity | Critical 5 →21Error 4 →17Warning 3 →13Information 2 →9Debug 1 →5Trace 0 →1None 6 →0 0 is the least severe; None (6) is a filter value, not a message level. |
| Python (logging) | grow with severity | CRITICAL 50 →21ERROR 40 →17WARNING 30 →13INFO 20 →9DEBUG 10 →5NOTSET 0 →0 Numbers grow with severity in steps of ten; NOTSET (0) means "inherit"; any integer is a legal level, and the OpenTelemetry SDK for Python maps the tens exactly (10 DEBUG, 20 INFO, 30 WARN, 40 ERROR, 50 FATAL) and the values between to the range's second, third and fourth steps. |
| Java (java.util.logging) | grow with severity | SEVERE 1000 →17WARNING 900 →13INFO 800 →9CONFIG 700 →7FINE 500 →6FINER 400 →5FINEST 300 →1OFF Integer.MAX_VALUE →0ALL Integer.MIN_VALUE →0 Numbers grow with severity; CONFIG sits between INFO and FINE; OFF and ALL are the integer extremes, not levels. |
| Log4j 2 | shrink with severity | FATAL 100 →21ERROR 200 →17WARN 300 →13INFO 400 →9DEBUG 500 →5TRACE 600 →1OFF 0 →0ALL Integer.MAX_VALUE →0 A lower priority number is more severe (FATAL 100, TRACE 600); OFF (0) and ALL (Integer.MAX_VALUE) are filters, not levels. |
| OpenTelemetry (SeverityNumber) | grow with severity | FATAL 21 →21ERROR 17 →17WARN 13 →13INFO 9 →9DEBUG 5 →5TRACE 1 →1UNSPECIFIED 0 →0 The scale the others are placed on: 24 values in six ranges of four; 0 is unspecified. |
Sources: RFC 5424 Table 2; the Linux kernel's printk documentation; the Cisco IOS command reference (logging buffered); Juniper's Junos syslog reference; the Windows event manifest schema; the .NET LogLevel enum; the Python logging documentation and the OpenTelemetry Python SDK's own table; the Java SE 21 Level class; the Log4j 2 manual; the OpenTelemetry Logs Data Model and its Appendix B. All read on 2026-10-05; the full list is under Sources below the tool.
Referencias
- RFC 5424, The Syslog Protocol (March 2009), section 6.2.1 Table 2
- Message logging with printk, The Linux Kernel documentation (core-api)
- Cisco IOS Configuration Fundamentals Command Reference, L through mode: logging buffered, the severity level table
- Juniper Networks, Junos OS: syslog facilities and severity levels (published 2013-07-08)
- Microsoft Learn, Windows Event Log: EventManifestSchema LevelType complex type (the predefined levels of winmeta.xml)
- Microsoft Learn, Microsoft.Extensions.Logging.LogLevel enum
- Python 3.14 documentation, logging: Logging Levels
- OpenTelemetry Python SDK, opentelemetry-sdk/_logs/_internal/__init__.py, the _STD_TO_OTEL table (main branch)
- Java SE 21 API, java.util.logging.Level
- Apache Log4j 2.x manual, Levels
- OpenTelemetry specification, Logs Data Model: SeverityNumber, and Data Model Appendix B, SeverityNumber example mappings