Skip to content

Commit 95bbc28

Browse files
committed
Merge pull request #447 from cchampet/dev_samDoSetHostLogLevel
sam do: set host log level
2 parents 196397c + 509c7dc commit 95bbc28

File tree

5 files changed

+83
-57
lines changed

5 files changed

+83
-57
lines changed

applications/sam/common/samDoUtils.py

Lines changed: 22 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,10 @@ def __init__(self, inputCommandLine, recursive):
2828
self._graph = []
2929
self._recursive = recursive
3030

31+
# check if there is a command
32+
if not len(inputCommandLine):
33+
return
34+
3135
# Get general graph from the command line
3236
generalGraph = SplitCmdGraph(inputCommandLine)
3337

@@ -259,31 +263,29 @@ def __init__(self, option_strings, dest, nargs=None, **kwargs):
259263
super(SamDoSetVerboseAction, self).__init__(option_strings, dest, **kwargs)
260264

261265
def __call__(self, parser, namespace, values, option_string=None):
262-
# if the given number is upper than the max tuttle verbose level, set verbose to trace
266+
# if the given number is upper than the max sam verbose level, set to trace
263267
try:
264268
if int(values) > 6:
265-
setattr(namespace, self.dest, 0)
269+
setattr(namespace, self.dest, 5)
266270
return
267271
except Exception:
268272
pass
269273

270-
if values == '0' or values.lower() == 'none':
271-
setattr(namespace, self.dest, None)
272-
elif values == '1' or values.lower() == 'fatal':
273-
setattr(namespace, self.dest, 5)
274-
elif values == '2' or values.lower() == 'error':
275-
setattr(namespace, self.dest, 4)
276-
elif values == '3' or values.lower() == 'warn':
277-
setattr(namespace, self.dest, 3)
278-
elif values == '4' or values.lower() == 'info':
279-
setattr(namespace, self.dest, 2)
280-
elif values == '5' or values.lower() == 'debug':
281-
setattr(namespace, self.dest, 1)
282-
elif values == '6' or values.lower() == 'trace':
274+
if values == '0' or values.lower() == 'fatal':
283275
setattr(namespace, self.dest, 0)
284-
# if the level is not recognized, no verbosity
276+
elif values == '1' or values.lower() == 'error':
277+
setattr(namespace, self.dest, 1)
278+
elif values == '2' or values.lower() == 'warn':
279+
setattr(namespace, self.dest, 2)
280+
elif values == '3' or values.lower() == 'info':
281+
setattr(namespace, self.dest, 3)
282+
elif values == '4' or values.lower() == 'debug':
283+
setattr(namespace, self.dest, 4)
284+
elif values == '5' or values.lower() == 'trace':
285+
setattr(namespace, self.dest, 5)
286+
# if the level is not recognized, set to warning
285287
else:
286-
setattr(namespace, self.dest, None)
288+
setattr(namespace, self.dest, 2)
287289

288290

289291
class ProgressHandle(tuttle.IProgressHandle):
@@ -311,6 +313,9 @@ def samDoCompleter(prefix, parsed_args, **kwargs):
311313
Custom Completer to manage auto competion when looking for openFX nodes.
312314
@warning The autocompletion works only for TuttleOFX plugins.
313315
"""
316+
# preload OFX plugins (to have auto completion of plugins name, their parameters...)
317+
tuttle.core().preload(True)
318+
314319
# get plugins
315320
pluginsId = tuttle.core().getImageEffectPluginCache().getPluginsByID()
316321
pluginsStr = [str(id).replace('tuttle.', '') for id in pluginsId]

applications/sam/common/samUtils.py

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,9 +62,25 @@ def setLogLevel(self, tuttleVerboseLevel):
6262
"""
6363
Set log level of all handlers of the logger.
6464
"""
65-
if tuttleVerboseLevel is not None:
66-
for handler in self.logger.handlers:
67-
handler.setLevel(10*tuttleVerboseLevel) # fit to python logging levels
65+
for handler in self.logger.handlers:
66+
if tuttleVerboseLevel is 0:
67+
# CRITICAL
68+
handler.setLevel(50)
69+
elif tuttleVerboseLevel is 1:
70+
# ERROR
71+
handler.setLevel(40)
72+
elif tuttleVerboseLevel is 2:
73+
# WARNING
74+
handler.setLevel(30)
75+
elif tuttleVerboseLevel is 3:
76+
# INFO
77+
handler.setLevel(20)
78+
elif tuttleVerboseLevel >= 4:
79+
# DEBUG (and trace)
80+
handler.setLevel(10)
81+
else:
82+
# WARNING
83+
handler.setLevel(30)
6884

6985

7086
def completion():

applications/sam/sam_do.py

Lines changed: 21 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -76,9 +76,6 @@ def __init__(self):
7676
Continues whatever happens: sam do reader [email protected] // writer [email protected] --continue-on-error
7777
'''
7878

79-
# preload OFX plugins (to have auto completion of plugins name, their parameters...)
80-
tuttle.core().preload(False)
81-
8279
def fillParser(self, parser):
8380
# Arguments
8481
parser.add_argument('inputs', nargs='*', action='store', help='command line to process').completer = samDoUtils.samDoCompleter
@@ -92,7 +89,7 @@ def fillParser(self, parser):
9289
parser.add_argument('--stop-on-missing-files', dest='stopOnMissingFiles', action='store_true', default=False, help='stop the process if missing files')
9390
parser.add_argument('--no-plugin-cache', dest='noPluginCache', action='store_true', default=False, help='load plugins without using the cache file')
9491
parser.add_argument('--rebuild-plugin-cache', dest='rebuildPluginCache', action='store_true', default=False, help='load plugins and rebuild the cache file')
95-
parser.add_argument('-v', '--verbose', dest='verbose', action=samDoUtils.SamDoSetVerboseAction, help='verbose level (0/none(by default), 1/fatal, 2/error, 3/warn, 4/info, 5/debug, 6(or upper)/trace)')
92+
parser.add_argument('-v', '--verbose', dest='verbose', action=samDoUtils.SamDoSetVerboseAction, default=0, help='verbose level (0/fatal (by default), 1/error, 2/warn, 3/info, 4/debug, 5(or upper)/trace)')
9693
# parser.add_argument('-h', '--help', dest='help', action='store_true', help='show this help message and exit')
9794

9895
def _setTimeRanges(self, computeOptions, ranges):
@@ -332,6 +329,17 @@ def _displayNodeHelp(self, nodeFullName, node):
332329
name=colored.green('Output'),
333330
bitdepth=', '.join(bitDepthOutputStr)))
334331

332+
def _displayCommandLineHelp(self, parser):
333+
"""
334+
Display sam-do command line help.
335+
"""
336+
subparser = samUtils.getSubParser(parser, 'do')
337+
# if sam-do is called from sam main command line
338+
if subparser is not None:
339+
puts(subparser.format_help())
340+
else:
341+
parser.print_help()
342+
335343
def _getTuttleGraph(self, splitCmd):
336344
"""
337345
Return the tuple (tuttle graph, its nodes) which corresponds to the given split command.
@@ -405,8 +413,15 @@ def run(self, parser):
405413
# Parse command-line
406414
args, unknown = parser.parse_known_args()
407415

408-
# Set log level
416+
# sam-do --help
417+
if len(args.inputs) == 0 and ('-h' in unknown or '--help' in unknown):
418+
self._displayCommandLineHelp(parser)
419+
exit(0)
420+
421+
# Set sam log level
409422
self.setLogLevel(args.verbose)
423+
# set tuttle host log level
424+
tuttle.core().getFormatter().setLogLevel_int(args.verbose)
410425

411426
# Clear plugin cache
412427
if args.rebuildPluginCache:
@@ -428,15 +443,6 @@ def run(self, parser):
428443
self._displayFileFormats()
429444
exit(0)
430445

431-
# sam-do --help
432-
if len(args.inputs) == 0:
433-
subparser = samUtils.getSubParser(parser, 'do')
434-
if subparser is not None:
435-
puts(subparser.format_help())
436-
exit(0)
437-
parser.print_help()
438-
exit(0)
439-
440446
# Add unknown options to the command line to process
441447
args.inputs.extend(unknown)
442448

@@ -453,8 +459,7 @@ def run(self, parser):
453459
# Options of process
454460
options = tuttle.ComputeOptions()
455461
# sam-do --verbose
456-
if args.verbose is not None:
457-
options.setVerboseLevel(args.verbose)
462+
options.setVerboseLevel(args.verbose)
458463
# sam-do --ranges
459464
if args.ranges is not None:
460465
self._setTimeRanges(options, args.ranges)

libraries/tuttle/src/tuttle/common/utils/Formatter.cpp

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -69,37 +69,37 @@ void Formatter::setLogLevel_int( const int level )
6969
{
7070
switch( level )
7171
{
72-
case 0: setLogLevel( boost::log::trivial::trace ); break;
73-
case 1: setLogLevel( boost::log::trivial::debug ); break;
74-
case 2: setLogLevel( boost::log::trivial::info ); break;
75-
case 3: setLogLevel( boost::log::trivial::warning ); break;
76-
case 4: setLogLevel( boost::log::trivial::error ); break;
77-
case 5: setLogLevel( boost::log::trivial::fatal ); break;
72+
case 0: setLogLevel( boost::log::trivial::fatal ); break;
73+
case 1: setLogLevel( boost::log::trivial::error ); break;
74+
case 2: setLogLevel( boost::log::trivial::warning ); break;
75+
case 3: setLogLevel( boost::log::trivial::info ); break;
76+
case 4: setLogLevel( boost::log::trivial::debug ); break;
77+
case 5: setLogLevel( boost::log::trivial::trace ); break;
7878
default:
7979
setLogLevel( boost::log::trivial::warning );
80-
TUTTLE_LOG_WARNING( "Unrecognized log level " << level << ", fallback to \"warning\" (3)." );
80+
TUTTLE_LOG_WARNING( "Unrecognized log level " << level << ", fallback to \"warning\" (2)." );
8181
break;
8282
}
8383
}
8484

8585
int logLevel_stringToInt( const std::string& level )
8686
{
8787
static const std::vector<std::string> m = boost::assign::list_of
88-
("trace")
89-
("debug")
90-
("info")
91-
("warning")
88+
("fatal")
9289
("error")
93-
("fatal");
90+
("warning")
91+
("info")
92+
("debug")
93+
("trace");
9494
std::string lowerStrLevel = level;
9595
boost::algorithm::to_lower(lowerStrLevel);
9696

9797
std::vector<std::string>::const_iterator v = std::find(m.begin(), m.end(), lowerStrLevel);
9898

9999
if( v == m.end() )
100100
{
101-
TUTTLE_LOG_WARNING( "Unrecognized log level " << quotes(level) << ", fallback to \"warning\" (3)." );
102-
return 3;
101+
TUTTLE_LOG_WARNING( "Unrecognized log level " << quotes(level) << ", fallback to \"warning\" (2)." );
102+
return 2;
103103
}
104104
return std::distance(m.begin(), v);
105105
}

libraries/tuttle/src/tuttle/host/ComputeOptions.hpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -55,12 +55,12 @@ struct TimeRange
5555

5656
enum EVerboseLevel
5757
{
58-
eVerboseLevelTrace = boost::log::trivial::trace,
59-
eVerboseLevelDebug = boost::log::trivial::debug,
60-
eVerboseLevelInfo = boost::log::trivial::info,
61-
eVerboseLevelWarning = boost::log::trivial::warning,
62-
eVerboseLevelError = boost::log::trivial::error,
63-
eVerboseLevelFatal = boost::log::trivial::fatal
58+
eVerboseLevelFatal,
59+
eVerboseLevelError,
60+
eVerboseLevelWarning,
61+
eVerboseLevelInfo,
62+
eVerboseLevelDebug,
63+
eVerboseLevelTrace
6464
};
6565

6666
class ComputeOptions
@@ -224,7 +224,7 @@ class ComputeOptions
224224
*/
225225
This& setVerboseLevel( const EVerboseLevel level )
226226
{
227-
tuttle::common::Formatter::get()->setLogLevel( static_cast<boost::log::trivial::severity_level>( level ) );
227+
tuttle::common::Formatter::get()->setLogLevel_int( static_cast<int>( level ) );
228228
return *this;
229229
}
230230

0 commit comments

Comments
 (0)