mirror of
ssh://git.janware.com/srv/git/janware/proj/jw-python
synced 2026-01-15 01:52:56 +01:00
log.py: Add set_flags()
Signed-off-by: Jan Lindemann <jan@janware.com>
This commit is contained in:
parent
51bbed559d
commit
4e3a6630da
2 changed files with 112 additions and 4 deletions
|
|
@ -35,6 +35,7 @@ def run_sub_commands(description = '', prefix = 'Cmd'): # export
|
||||||
parser = argparse.ArgumentParser(usage=os.path.basename(sys.argv[0]) + ' [command] [options]',
|
parser = argparse.ArgumentParser(usage=os.path.basename(sys.argv[0]) + ' [command] [options]',
|
||||||
formatter_class=argparse.ArgumentDefaultsHelpFormatter, description=description)
|
formatter_class=argparse.ArgumentDefaultsHelpFormatter, description=description)
|
||||||
parser.add_argument('--log-level', help='Log level', default='notice')
|
parser.add_argument('--log-level', help='Log level', default='notice')
|
||||||
|
parser.add_argument('--log-flags', help='Log flags', default='stderr,position,prio,color')
|
||||||
subparsers = parser.add_subparsers(title='Available commands', metavar='')
|
subparsers = parser.add_subparsers(title='Available commands', metavar='')
|
||||||
|
|
||||||
for (name, cls) in classes:
|
for (name, cls) in classes:
|
||||||
|
|
@ -46,4 +47,5 @@ def run_sub_commands(description = '', prefix = 'Cmd'): # export
|
||||||
|
|
||||||
args=parser.parse_args()
|
args=parser.parse_args()
|
||||||
log.set_level(args.log_level)
|
log.set_level(args.log_level)
|
||||||
|
log.set_flags(args.log_flags)
|
||||||
args.func(args)
|
args.func(args)
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,8 @@
|
||||||
|
from __future__ import print_function
|
||||||
import syslog
|
import syslog
|
||||||
|
import sys
|
||||||
|
import inspect
|
||||||
|
from os.path import basename
|
||||||
|
|
||||||
EMERG = syslog.LOG_EMERG
|
EMERG = syslog.LOG_EMERG
|
||||||
ALERT = syslog.LOG_ALERT
|
ALERT = syslog.LOG_ALERT
|
||||||
|
|
@ -13,14 +17,97 @@ OFF = DEVEL + 1
|
||||||
|
|
||||||
level = NOTICE
|
level = NOTICE
|
||||||
|
|
||||||
|
CONSOLE_FONT_BOLD = '\033[1m'
|
||||||
|
CONSOLE_FONT_RED = '\033[31m'
|
||||||
|
CONSOLE_FONT_GREEN = '\033[32m'
|
||||||
|
CONSOLE_FONT_YELLOW = '\033[33m'
|
||||||
|
CONSOLE_FONT_BLUE = '\033[34m'
|
||||||
|
|
||||||
|
CONSOLE_FONT_MAGENTA = '\033[35m'
|
||||||
|
CONSOLE_FONT_CYAN = '\033[36m'
|
||||||
|
CONSOLE_FONT_WHITE = '\033[37m'
|
||||||
|
|
||||||
|
CONSOLE_FONT_BLINK = '\033[5m'
|
||||||
|
CONSOLE_FONT_OFF = '\033[m'
|
||||||
|
|
||||||
|
f_position = 'position'
|
||||||
|
f_stderr = 'stderr'
|
||||||
|
f_stdout = 'stdout'
|
||||||
|
f_prio = 'prio'
|
||||||
|
f_color = 'color'
|
||||||
|
f_default = [ f_position, f_stderr, f_prio, f_color ]
|
||||||
|
|
||||||
|
flags = set(f_default)
|
||||||
|
|
||||||
|
short_prio_str = {
|
||||||
|
EMERG : '<Y>',
|
||||||
|
ALERT : '<A>',
|
||||||
|
CRIT : '<C>',
|
||||||
|
ERR : '<E>',
|
||||||
|
WARNING : '<W>',
|
||||||
|
NOTICE : '<N>',
|
||||||
|
INFO : '<I>',
|
||||||
|
DEBUG : '<D>',
|
||||||
|
DEVEL : '<V>',
|
||||||
|
}
|
||||||
|
|
||||||
|
prio_colors = {
|
||||||
|
DEVEL : [ "", "" ],
|
||||||
|
DEBUG : [ "", "" ],
|
||||||
|
INFO : [ CONSOLE_FONT_BLUE, CONSOLE_FONT_OFF ],
|
||||||
|
NOTICE : [ CONSOLE_FONT_GREEN, CONSOLE_FONT_OFF ],
|
||||||
|
WARNING : [ CONSOLE_FONT_YELLOW, CONSOLE_FONT_OFF ],
|
||||||
|
ERR : [ CONSOLE_FONT_BOLD + CONSOLE_FONT_RED, CONSOLE_FONT_OFF ],
|
||||||
|
CRIT : [ CONSOLE_FONT_BOLD + CONSOLE_FONT_MAGENTA, CONSOLE_FONT_OFF ],
|
||||||
|
ALERT : [ CONSOLE_FONT_BOLD + CONSOLE_FONT_MAGENTA, CONSOLE_FONT_OFF ],
|
||||||
|
EMERG : [ CONSOLE_FONT_BOLD + CONSOLE_FONT_MAGENTA, CONSOLE_FONT_OFF ],
|
||||||
|
}
|
||||||
|
|
||||||
|
def __pad(token, total_size, right_align = False):
|
||||||
|
add = total_size - len(token)
|
||||||
|
if add <= 0:
|
||||||
|
return token
|
||||||
|
space = ' ' * add
|
||||||
|
if right_align:
|
||||||
|
return space + token
|
||||||
|
return token + space
|
||||||
|
|
||||||
def slog(prio, *args): # export
|
def slog(prio, *args): # export
|
||||||
|
|
||||||
if prio > level:
|
if prio > level:
|
||||||
return
|
return
|
||||||
|
|
||||||
msg = ''
|
msg = ''
|
||||||
for a in args:
|
color_on = ''
|
||||||
msg += ' ' + str(a)
|
color_off = ''
|
||||||
|
file = sys.stderr
|
||||||
|
|
||||||
|
if f_prio in flags:
|
||||||
|
msg += short_prio_str[prio] + ' '
|
||||||
|
|
||||||
|
if f_position in flags:
|
||||||
|
caller_frame = inspect.currentframe().f_back
|
||||||
|
line = '[' + __pad(str(caller_frame.f_lineno), 4, True) + ']'
|
||||||
|
file = __pad(basename(caller_frame.f_code.co_filename), 20)
|
||||||
|
msg += file + line
|
||||||
|
|
||||||
|
if f_color in flags:
|
||||||
|
color_on, color_off = prio_colors[prio]
|
||||||
|
|
||||||
|
if len(args):
|
||||||
|
margs = ''
|
||||||
|
for a in args:
|
||||||
|
margs += ' ' + str(a)
|
||||||
|
msg += color_on + margs + color_off
|
||||||
|
|
||||||
|
if f_stdout in flags:
|
||||||
|
file = sys.stdout
|
||||||
|
|
||||||
|
if f_stderr in flags:
|
||||||
|
file = sys.stderr
|
||||||
|
|
||||||
if len(msg):
|
if len(msg):
|
||||||
print msg[1:]
|
print(msg, file=file)
|
||||||
|
|
||||||
def parse_log_prio_str(prio): # export
|
def parse_log_prio_str(prio): # export
|
||||||
try:
|
try:
|
||||||
|
|
@ -54,10 +141,29 @@ def parse_log_prio_str(prio): # export
|
||||||
return map_prio_str_to_val[prio]
|
return map_prio_str_to_val[prio]
|
||||||
raise Exception("Unknown priority string \"", prio, "\"")
|
raise Exception("Unknown priority string \"", prio, "\"")
|
||||||
|
|
||||||
|
|
||||||
def set_level(level_): # export
|
def set_level(level_): # export
|
||||||
global level
|
global level
|
||||||
if isinstance(level_, basestring):
|
if isinstance(level_, basestring):
|
||||||
level = parse_log_prio_str(level_)
|
level = parse_log_prio_str(level_)
|
||||||
return
|
return
|
||||||
level = level_
|
level = level_
|
||||||
|
|
||||||
|
def set_flags(flags_): # export
|
||||||
|
global flags
|
||||||
|
flags = set(flags_.split(','))
|
||||||
|
|
||||||
|
#syslog
|
||||||
|
#console
|
||||||
|
#color
|
||||||
|
#prio
|
||||||
|
#position
|
||||||
|
#ide
|
||||||
|
#trace_rename_thread_to_shorter
|
||||||
|
#trace_rename_thread_to_longer
|
||||||
|
#trace_inout
|
||||||
|
#skip_openlog
|
||||||
|
#id
|
||||||
|
#date
|
||||||
|
#pid
|
||||||
|
#highlight_first_error
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue