Fixed level issues on log output. Also tweaked it so that all log rows come to the log file, but not nessecarily the interactive screen (tty/journald). Also tweaked certain log messages to be printed vs not printed.
This commit is contained in:
parent
ab69cb7525
commit
f594e6638a
|
|
@ -245,7 +245,7 @@ class sys_command():#Thread):
|
||||||
self.exit_code = 0
|
self.exit_code = 0
|
||||||
|
|
||||||
if self.exit_code != 0 and not self.kwargs['suppress_errors']:
|
if self.exit_code != 0 and not self.kwargs['suppress_errors']:
|
||||||
self.log(f"'{self.raw_cmd}' did not exit gracefully, exit code {self.exit_code}.", level=LOG_LEVELS.Debug)
|
self.log(f"'{self.raw_cmd}' did not exit gracefully, exit code {self.exit_code}.", level=LOG_LEVELS.Error)
|
||||||
self.log(self.trace_log.decode('UTF-8'), level=LOG_LEVELS.Debug)
|
self.log(self.trace_log.decode('UTF-8'), level=LOG_LEVELS.Debug)
|
||||||
raise SysCallError(f"'{self.raw_cmd}' did not exit gracefully, exit code {self.exit_code}.\n{self.trace_log.decode('UTF-8')}")
|
raise SysCallError(f"'{self.raw_cmd}' did not exit gracefully, exit code {self.exit_code}.\n{self.trace_log.decode('UTF-8')}")
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -74,16 +74,6 @@ def stylize_output(text :str, *opts, **kwargs):
|
||||||
return '%s%s' % (('\x1b[%sm' % ';'.join(code_list)), text or '')
|
return '%s%s' % (('\x1b[%sm' % ';'.join(code_list)), text or '')
|
||||||
|
|
||||||
def log(*args, **kwargs):
|
def log(*args, **kwargs):
|
||||||
if 'level' in kwargs:
|
|
||||||
if 'LOG_LEVEL' not in storage:
|
|
||||||
storage['LOG_LEVEL'] = LOG_LEVELS.Info
|
|
||||||
|
|
||||||
if kwargs['level'] >= storage['LOG_LEVEL']:
|
|
||||||
print(f"Level {kwargs['level']} is higher than storage log level {storage['LOG_LEVEL']}.")
|
|
||||||
# Level on log message was Debug, but output level is set to Info.
|
|
||||||
# In that case, we'll drop it.
|
|
||||||
return None
|
|
||||||
|
|
||||||
string = orig_string = ' '.join([str(x) for x in args])
|
string = orig_string = ' '.join([str(x) for x in args])
|
||||||
|
|
||||||
if supports_color():
|
if supports_color():
|
||||||
|
|
@ -91,6 +81,7 @@ def log(*args, **kwargs):
|
||||||
string = stylize_output(string, **kwargs)
|
string = stylize_output(string, **kwargs)
|
||||||
|
|
||||||
# Log to a file output unless specifically told to suppress this feature.
|
# Log to a file output unless specifically told to suppress this feature.
|
||||||
|
# (level has no effect on the log file, everything will be written there)
|
||||||
if 'file' in kwargs and not 'suppress' in kwargs and kwargs['suppress']:
|
if 'file' in kwargs and not 'suppress' in kwargs and kwargs['suppress']:
|
||||||
if type(kwargs['file']) is str:
|
if type(kwargs['file']) is str:
|
||||||
with open(kwargs['file'], 'a') as log_file:
|
with open(kwargs['file'], 'a') as log_file:
|
||||||
|
|
@ -99,10 +90,23 @@ def log(*args, **kwargs):
|
||||||
kwargs['file'].write(f"{orig_string}\n")
|
kwargs['file'].write(f"{orig_string}\n")
|
||||||
|
|
||||||
# If we assigned a level, try to log it to systemd's journald.
|
# If we assigned a level, try to log it to systemd's journald.
|
||||||
|
# Unless the level is higher than we've decided to output interactively.
|
||||||
|
# (Remember, log files still get *ALL* the output despite level restrictions)
|
||||||
if 'level' in kwargs:
|
if 'level' in kwargs:
|
||||||
|
if 'LOG_LEVEL' not in storage:
|
||||||
|
storage['LOG_LEVEL'] = LOG_LEVELS.Info
|
||||||
|
|
||||||
|
if kwargs['level'] > storage['LOG_LEVEL']:
|
||||||
|
print(f"Level {kwargs['level']} is higher than storage log level {storage['LOG_LEVEL']}.")
|
||||||
|
# Level on log message was Debug, but output level is set to Info.
|
||||||
|
# In that case, we'll drop it.
|
||||||
|
return None
|
||||||
|
|
||||||
try:
|
try:
|
||||||
journald.log(string, level=kwargs['level'])
|
journald.log(string, level=kwargs['level'])
|
||||||
except ModuleNotFoundError:
|
except ModuleNotFoundError:
|
||||||
pass # Ignore writing to journald
|
pass # Ignore writing to journald
|
||||||
|
|
||||||
|
# Finally, print the log unless we skipped it based on level.
|
||||||
|
# And we print the string which may or may not contain color formatting.
|
||||||
print(string)
|
print(string)
|
||||||
Loading…
Reference in New Issue