Completed
Push — master ( cbdbde...55362b )
by Jace
20s queued 11s
created

log.filters.install()   A

Complexity

Conditions 2

Size

Total Lines 3
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 3
nop 1
dl 0
loc 3
rs 10
c 0
b 0
f 0
1
import logging
2
import os
3
import sys
4
5
6
class RelpathFormatFilter(logging.Filter):
7
    """Adds '%(relpath)s' as a 'LogRecord' attribute."""
8
9
    def filter(self, record):
10
        pathname = record.pathname
11
        record.relpath = None
12
        abs_sys_paths = [os.path.abspath(p) for p in sys.path]
13
        for path in sorted(abs_sys_paths, key=len, reverse=True):
14
            if not path.endswith(os.sep):
15
                path += os.sep
16
            if pathname.startswith(path):
17
                record.relpath = os.path.relpath(pathname, path)
18
                break
19
        return True
20
21
22
relpath_format_filter = RelpathFormatFilter()
23
24
25
def install(logger):
26
    for handler in logger.handlers:
27
        handler.addFilter(relpath_format_filter)
28