Implement logging options in mystery.py (#73)

Required for using the multimystery.py from the doors branch without modifications.
This commit is contained in:
CaitSith2 2020-04-24 17:01:55 -07:00 committed by GitHub
parent 5d33b4b164
commit b90484acb7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 30 additions and 1 deletions

View File

@ -36,6 +36,8 @@ def main():
parser.add_argument('--outputpath') parser.add_argument('--outputpath')
parser.add_argument('--race', action='store_true') parser.add_argument('--race', action='store_true')
parser.add_argument('--meta', default=None) parser.add_argument('--meta', default=None)
parser.add_argument('--log_output_path', help='Path to store output log')
parser.add_argument('--loglevel', default='info', help='Sets log level')
for player in range(1, multiargs.multi + 1): for player in range(1, multiargs.multi + 1):
parser.add_argument(f'--p{player}', help=argparse.SUPPRESS) parser.add_argument(f'--p{player}', help=argparse.SUPPRESS)
@ -87,7 +89,34 @@ def main():
erargs.teams = args.teams erargs.teams = args.teams
# set up logger # set up logger
if args.loglevel:
erargs.loglevel = args.loglevel
loglevel = {'error': logging.ERROR, 'info': logging.INFO, 'warning': logging.WARNING, 'debug': logging.DEBUG}[erargs.loglevel] loglevel = {'error': logging.ERROR, 'info': logging.INFO, 'warning': logging.WARNING, 'debug': logging.DEBUG}[erargs.loglevel]
import sys
class LoggerWriter(object):
def __init__(self, writer):
self._writer = writer
self._msg = ''
def write(self, message):
self._msg = self._msg + message
while '\n' in self._msg:
pos = self._msg.find('\n')
self._writer(self._msg[:pos])
self._msg = self._msg[pos + 1:]
def flush(self):
if self._msg != '':
self._writer(self._msg)
self._msg = ''
if args.log_output_path:
log = logging.getLogger("stderr")
log.addHandler(logging.StreamHandler())
sys.stderr = LoggerWriter(log.error)
os.makedirs(args.log_output_path, exist_ok=True)
logging.basicConfig(format='%(message)s', level=loglevel, filename=os.path.join(args.log_output_path, f"{seed}.log"))
else:
logging.basicConfig(format='%(message)s', level=loglevel) logging.basicConfig(format='%(message)s', level=loglevel)
if args.rom: if args.rom: