Core: datetime-tag log files and delete old ones
This commit is contained in:
		
							parent
							
								
									67128ece38
								
							
						
					
					
						commit
						5ed8c2e1c0
					
				
							
								
								
									
										16
									
								
								Utils.py
								
								
								
								
							
							
						
						
									
										16
									
								
								Utils.py
								
								
								
								
							| 
						 | 
				
			
			@ -452,6 +452,7 @@ loglevel_mapping = {'error': logging.ERROR, 'info': logging.INFO, 'warning': log
 | 
			
		|||
def init_logging(name: str, loglevel: typing.Union[str, int] = logging.INFO, write_mode: str = "w",
 | 
			
		||||
                 log_format: str = "[%(name)s at %(asctime)s]: %(message)s",
 | 
			
		||||
                 exception_logger: typing.Optional[str] = None):
 | 
			
		||||
    import datetime
 | 
			
		||||
    loglevel: int = loglevel_mapping.get(loglevel, loglevel)
 | 
			
		||||
    log_folder = user_path("logs")
 | 
			
		||||
    os.makedirs(log_folder, exist_ok=True)
 | 
			
		||||
| 
						 | 
				
			
			@ -460,6 +461,8 @@ def init_logging(name: str, loglevel: typing.Union[str, int] = logging.INFO, wri
 | 
			
		|||
        root_logger.removeHandler(handler)
 | 
			
		||||
        handler.close()
 | 
			
		||||
    root_logger.setLevel(loglevel)
 | 
			
		||||
    if "a" not in write_mode:
 | 
			
		||||
        name += f"_{datetime.datetime.now().strftime('%Y_%m_%d_%H_%M_%S')}"
 | 
			
		||||
    file_handler = logging.FileHandler(
 | 
			
		||||
        os.path.join(log_folder, f"{name}.txt"),
 | 
			
		||||
        write_mode,
 | 
			
		||||
| 
						 | 
				
			
			@ -487,6 +490,19 @@ def init_logging(name: str, loglevel: typing.Union[str, int] = logging.INFO, wri
 | 
			
		|||
 | 
			
		||||
        sys.excepthook = handle_exception
 | 
			
		||||
 | 
			
		||||
    def _cleanup():
 | 
			
		||||
        for file in os.scandir(log_folder):
 | 
			
		||||
            if file.name.endswith(".txt"):
 | 
			
		||||
                last_change = datetime.datetime.fromtimestamp(file.stat().st_mtime)
 | 
			
		||||
                if datetime.datetime.now() - last_change > datetime.timedelta(days=7):
 | 
			
		||||
                    try:
 | 
			
		||||
                        os.unlink(file.path)
 | 
			
		||||
                    except Exception as e:
 | 
			
		||||
                        logging.exception(e)
 | 
			
		||||
                    else:
 | 
			
		||||
                        logging.info(f"Deleted old logfile {file.path}")
 | 
			
		||||
    import threading
 | 
			
		||||
    threading.Thread(target=_cleanup, name="LogCleaner").start()
 | 
			
		||||
    logging.info(f"Archipelago ({__version__}) logging initialized.")
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue