mirror of
https://github.com/systemd/systemd.git
synced 2024-12-22 17:35:35 +03:00
tools: pylint catalog-report.py
This commit is contained in:
parent
e7ecc24eda
commit
b4048aaa1e
@ -28,57 +28,57 @@ Prints out journal entries with no or bad catalog explanations.
|
||||
"""
|
||||
|
||||
import re
|
||||
from systemd import journal, id128
|
||||
|
||||
j = journal.Reader()
|
||||
from systemd import id128, journal
|
||||
|
||||
logged = set()
|
||||
pattern = re.compile('@[A-Z0-9_]+@')
|
||||
|
||||
mids = {v:k for k,v in id128.__dict__.items()
|
||||
if k.startswith('SD_MESSAGE')}
|
||||
|
||||
freq = 1000
|
||||
|
||||
def log_entry(x):
|
||||
if 'CODE_FILE' in x:
|
||||
# pylint: disable=consider-using-f-string
|
||||
def log_entry(entry):
|
||||
if 'CODE_FILE' in entry:
|
||||
# some of our code was using 'CODE_FUNCTION' instead of 'CODE_FUNC'
|
||||
print('{}:{} {}'.format(x.get('CODE_FILE', '???'),
|
||||
x.get('CODE_LINE', '???'),
|
||||
x.get('CODE_FUNC', None) or x.get('CODE_FUNCTION', '???')))
|
||||
print(' {}'.format(x.get('MESSAGE', 'no message!')))
|
||||
for k, v in x.items():
|
||||
print('{}:{} {}'.format(entry.get('CODE_FILE', '???'),
|
||||
entry.get('CODE_LINE', '???'),
|
||||
entry.get('CODE_FUNC', None) or entry.get('CODE_FUNCTION', '???')))
|
||||
print(' {}'.format(entry.get('MESSAGE', 'no message!')))
|
||||
for k, v in entry.items():
|
||||
if k.startswith('CODE_') or k in {'MESSAGE_ID', 'MESSAGE'}:
|
||||
continue
|
||||
print(' {}={}'.format(k, v))
|
||||
print(f' {k}={v}')
|
||||
print()
|
||||
|
||||
for i, x in enumerate(j):
|
||||
if i % freq == 0:
|
||||
print(i, end='\r')
|
||||
if __name__ == '__main__':
|
||||
j = journal.Reader()
|
||||
logged = set()
|
||||
pattern = re.compile('@[A-Z0-9_]+@')
|
||||
|
||||
try:
|
||||
mid = x['MESSAGE_ID']
|
||||
except KeyError:
|
||||
continue
|
||||
name = mids.get(mid, 'unknown')
|
||||
mids = { v:k for k,v in id128.__dict__.items() if k.startswith('SD_MESSAGE') }
|
||||
|
||||
try:
|
||||
desc = journal.get_catalog(mid)
|
||||
except FileNotFoundError:
|
||||
if mid in logged:
|
||||
for i, x in enumerate(j):
|
||||
if i % 1000 == 0:
|
||||
print(i, end='\r')
|
||||
|
||||
try:
|
||||
mid = x['MESSAGE_ID']
|
||||
except KeyError:
|
||||
continue
|
||||
name = mids.get(mid, 'unknown')
|
||||
|
||||
try:
|
||||
desc = journal.get_catalog(mid)
|
||||
except FileNotFoundError:
|
||||
if mid in logged:
|
||||
continue
|
||||
|
||||
print(f'{name} {mid.hex}: no catalog entry')
|
||||
log_entry(x)
|
||||
logged.add(mid)
|
||||
continue
|
||||
|
||||
print('{} {.hex}: no catalog entry'.format(name, mid))
|
||||
log_entry(x)
|
||||
logged.add(mid)
|
||||
continue
|
||||
|
||||
fields = [field[1:-1] for field in pattern.findall(desc)]
|
||||
for field in fields:
|
||||
index = (mid, field)
|
||||
if field in x or index in logged:
|
||||
continue
|
||||
print('{} {.hex}: no field {}'.format(name, mid, field))
|
||||
log_entry(x)
|
||||
logged.add(index)
|
||||
fields = [field[1:-1] for field in pattern.findall(desc)]
|
||||
for field in fields:
|
||||
index = (mid, field)
|
||||
if field in x or index in logged:
|
||||
continue
|
||||
print(f'{name} {mid.hex}: no field {field}')
|
||||
log_entry(x)
|
||||
logged.add(index)
|
||||
|
Loading…
Reference in New Issue
Block a user