X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=bin%2FrunSalomeCommon.py;h=9a4d68629f1e3ce8d8e5a0f849f05a1d5a7269b8;hb=1a5f1c76c7259e1b3d60ed3ad6d99d0a0f7e7092;hp=354017404be16e9cf52751a3dcb3d4ff699482c8;hpb=a912b5982015ae2b0169be691b7c4915977132d9;p=modules%2Fkernel.git diff --git a/bin/runSalomeCommon.py b/bin/runSalomeCommon.py index 354017404..9a4d68629 100755 --- a/bin/runSalomeCommon.py +++ b/bin/runSalomeCommon.py @@ -1,6 +1,6 @@ #!/usr/bin/env python3 # -*- coding: iso-8859-1 -*- -# Copyright (C) 2007-2021 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2023 CEA, EDF, OPEN CASCADE # # Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -34,6 +34,11 @@ import subprocess from salomeContextUtils import ScriptAndArgsObjectEncoder import platform import logging + +## Setting formatter in setVerbose() was commented because adding of handler +## breaks using of root logger in other modules and cause many double lines in logs. +#FORMAT = '%(levelname)s : %(asctime)s : [%(filename)s:%(funcName)s:%(lineno)s] : %(message)s' +#logging.basicConfig(format=FORMAT) logger = logging.getLogger() class ColoredFormatter(logging.Formatter): @@ -44,12 +49,37 @@ class ColoredFormatter(logging.Formatter): def format(self, record): RESET_SEQ = "\033[0m" COLOR_SEQ = "\033[1;%dm" + import inspect + frame = inspect.currentframe() + for i in range(8): + frame = frame.f_back record.levelname = COLOR_SEQ % ColoredFormatter.COLORS[record.levelname] + record.levelname + RESET_SEQ + record.msg = "{} ( callsite is {} of file \"{}\" at line {} )".format(record.msg, frame.f_code.co_name,inspect.getsourcefile(frame),inspect.getlineno(frame) ) + return logging.Formatter.format(self, record) + +class BackTraceFormatter(logging.Formatter): + def __init__(self, *args, **kwargs): + logging.Formatter.__init__(self, *args, **kwargs) + def format(self, record): + import inspect + frame = inspect.currentframe() + # go upward of the stack to catch the effective callsite. Not very steady.... + # should be replaced by an analysis of frame.f_code + for i in range(8): + frame = frame.f_back + record.msg = "{} ( callsite is {} of file \"{}\" at line {} )".format(record.msg, frame.f_code.co_name,inspect.getsourcefile(frame),inspect.getlineno(frame) ) return logging.Formatter.format(self, record) def setVerbose(verbose): + from packaging import version + current_version = version.parse("{}.{}".format(sys.version_info.major,sys.version_info.minor)) + version_ref = version.parse("3.5.0") global logger - formatter = logging.Formatter('%(levelname)s : %(asctime)s : %(message)s ',style='%') + formatter = None + if current_version >= version_ref: + formatter = BackTraceFormatter('%(levelname)s : %(asctime)s : %(message)s ',style='%') + else: + formatter = logging.Formatter('%(levelname)s : %(asctime)s : %(message)s ',style='%') formatter.default_time_format = '%H:%M:%S' formatter.default_msec_format = "%s.%03d" stream_handler = logging.StreamHandler() @@ -322,7 +352,6 @@ class CommonSessionServer(Server): pass if 'language' in self.args: self.SCMD2+=['--language=%s' % self.args['language']] - tempfile.mkstemp() os_handle, iorfakens = tempfile.mkstemp() self.iorfakens = iorfakens os.close(os_handle)