Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(121)

Side by Side Diff: client/trace_inputs.py

Issue 1233303003: Migrate and merge logging_utils from swarming_bot into client/utils. (Closed) Base URL: git@github.com:luci/luci-py.git@master
Patch Set: Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # coding=utf-8 2 # coding=utf-8
3 # Copyright 2012 The Swarming Authors. All rights reserved. 3 # Copyright 2012 The Swarming Authors. All rights reserved.
4 # Use of this source code is governed under the Apache License, Version 2.0 that 4 # Use of this source code is governed under the Apache License, Version 2.0 that
5 # can be found in the LICENSE file. 5 # can be found in the LICENSE file.
6 6
7 """Traces an executable and its child processes and extract the files accessed 7 """Traces an executable and its child processes and extract the files accessed
8 by them. 8 by them.
9 9
10 The implementation uses OS-specific API. The native Kernel logger and the ETL 10 The implementation uses OS-specific API. The native Kernel logger and the ETL
(...skipping 21 matching lines...) Expand all
32 import tempfile 32 import tempfile
33 import threading 33 import threading
34 import time 34 import time
35 import weakref 35 import weakref
36 36
37 from third_party import colorama 37 from third_party import colorama
38 from third_party.depot_tools import fix_encoding 38 from third_party.depot_tools import fix_encoding
39 from third_party.depot_tools import subcommand 39 from third_party.depot_tools import subcommand
40 40
41 from utils import file_path 41 from utils import file_path
42 from utils import logging_utils
42 from utils import tools 43 from utils import tools
43 44
44 ## OS-specific imports 45 ## OS-specific imports
45 46
46 if sys.platform == 'win32': 47 if sys.platform == 'win32':
47 from ctypes.wintypes import byref, c_int, c_wchar_p 48 from ctypes.wintypes import byref, c_int, c_wchar_p
48 from ctypes.wintypes import windll # pylint: disable=E0611 49 from ctypes.wintypes import windll # pylint: disable=E0611
49 50
50 51
51 __version__ = '0.1' 52 __version__ = '0.1'
(...skipping 3294 matching lines...) Expand 10 before | Expand all | Expand 10 after
3346 return 1 3347 return 1
3347 except IOError as e: 3348 except IOError as e:
3348 if e.errno == errno.EPIPE: 3349 if e.errno == errno.EPIPE:
3349 # Do not print a stack trace when the output is piped to less and the user 3350 # Do not print a stack trace when the output is piped to less and the user
3350 # quits before the whole output was written. 3351 # quits before the whole output was written.
3351 return 1 3352 return 1
3352 raise 3353 raise
3353 return 0 3354 return 0
3354 3355
3355 3356
3356 class OptionParserTraceInputs(tools.OptionParserWithLogging): 3357 class OptionParserTraceInputs(logging_utils.OptionParserWithLogging):
3357 """Adds automatic --log handling.""" 3358 """Adds automatic --log handling."""
3358 3359
3359 # Disable --log-file options since both --log and --log-file options are 3360 # Disable --log-file options since both --log and --log-file options are
3360 # confusing. 3361 # confusing.
3361 # TODO(vadimsh): Rename --log-file or --log to something else. 3362 # TODO(vadimsh): Rename --log-file or --log to something else.
3362 enable_log_file = False 3363 enable_log_file = False
3363 3364
3364 def __init__(self, **kwargs): 3365 def __init__(self, **kwargs):
3365 tools.OptionParserWithLogging.__init__(self, **kwargs) 3366 logging_utils.OptionParserWithLogging.__init__(self, **kwargs)
3366 self.add_option( 3367 self.add_option(
3367 '-l', '--log', help='Log file to generate or read, required') 3368 '-l', '--log', help='Log file to generate or read, required')
3368 3369
3369 def parse_args(self, *args, **kwargs): 3370 def parse_args(self, *args, **kwargs):
3370 """Makes sure the paths make sense. 3371 """Makes sure the paths make sense.
3371 3372
3372 On Windows, / and \ are often mixed together in a path. 3373 On Windows, / and \ are often mixed together in a path.
3373 """ 3374 """
3374 options, args = tools.OptionParserWithLogging.parse_args( 3375 options, args = logging_utils.OptionParserWithLogging.parse_args(
3375 self, *args, **kwargs) 3376 self, *args, **kwargs)
3376 if not options.log: 3377 if not options.log:
3377 self.error('Must supply a log file with -l') 3378 self.error('Must supply a log file with -l')
3378 options.log = os.path.abspath(options.log) 3379 options.log = os.path.abspath(options.log)
3379 return options, args 3380 return options, args
3380 3381
3381 3382
3382 def main(argv): 3383 def main(argv):
3383 dispatcher = subcommand.CommandDispatcher(__name__) 3384 dispatcher = subcommand.CommandDispatcher(__name__)
3384 try: 3385 try:
3385 return dispatcher.execute( 3386 return dispatcher.execute(
3386 OptionParserTraceInputs(version=__version__), argv) 3387 OptionParserTraceInputs(version=__version__), argv)
3387 except TracingFailure, e: 3388 except TracingFailure, e:
3388 sys.stderr.write('\nError: ') 3389 sys.stderr.write('\nError: ')
3389 sys.stderr.write(str(e)) 3390 sys.stderr.write(str(e))
3390 sys.stderr.write('\n') 3391 sys.stderr.write('\n')
3391 return 1 3392 return 1
3392 3393
3393 3394
3394 if __name__ == '__main__': 3395 if __name__ == '__main__':
3395 fix_encoding.fix_encoding() 3396 fix_encoding.fix_encoding()
3396 tools.disable_buffering() 3397 tools.disable_buffering()
3397 colorama.init() 3398 colorama.init()
3398 sys.exit(main(sys.argv[1:])) 3399 sys.exit(main(sys.argv[1:]))
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698