File size: 1,862 Bytes
b57bc26 be16556 7cc32e5 9b866fc 7cc32e5 9b866fc 7cc32e5 b57bc26 7cc32e5 b57bc26 7cc32e5 b57bc26 7cc32e5 b57bc26 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
'''Collections of helper functions for Gradio user interface.'''
import os
import re
import logging
from pathlib import Path
from logging.handlers import RotatingFileHandler
def get_dialog_logger(name: str = 'dialog', clear: bool = True) -> logging.Logger:
'''Sets up logger for model's internal dialog.'''
# Make sure log directory exists
Path('logs').mkdir(parents=True, exist_ok=True)
# Clear old logs if desired
if clear:
delete_old_logs('logs', 'dialog')
# Create logger
new_dialog_logger = logging.getLogger(name)
# Create handler
handler = RotatingFileHandler(
'logs/dialog.log',
maxBytes=100000,
backupCount=10,
mode='w'
)
# Add format to handler
formatter = logging.Formatter('%(message)s')
handler.setFormatter(formatter)
new_dialog_logger.addHandler(handler)
# Set logging level
new_dialog_logger.setLevel(logging.INFO)
return new_dialog_logger
def update_dialog(n: int = 10):
'''Gets updated internal dialog logging output from disk to display to user.
Args:
n: number of most recent lines of internal dialog output to display
Returns:
Internal dialog logging output as string
'''
with open('logs/dialog.log', 'r', encoding='utf-8') as log_file:
lines = log_file.readlines()
return ''.join(lines[-n:])
def delete_old_logs(directory:str, basename:str) -> None:
'''Deletes old log files from previous optimization sessions, if present.
Args:
directory: path to log file directory as string
basename: log file base name as string
Returns:
None
'''
for filename in os.listdir(directory):
file_path = os.path.join(directory, filename)
if re.search(basename, filename):
os.remove(file_path)
|