feat: Implement logging functionality; add logger configuration and retrieval
This commit is contained in:
		@@ -52,7 +52,6 @@ def reprompt(nextsteps: str, processor) -> None:
 | 
			
		||||
    scr = screenshot_to_base64(take_screenshot())
 | 
			
		||||
    return processor.process(nextsteps, img_data=scr)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def _execute(name, args, processor):
 | 
			
		||||
    if name == "click_button":
 | 
			
		||||
        press_mouse(MouseInput(**args))
 | 
			
		||||
 
 | 
			
		||||
@@ -4,6 +4,10 @@ import openai
 | 
			
		||||
from flask import jsonify
 | 
			
		||||
from objects import aic
 | 
			
		||||
import ai.compute
 | 
			
		||||
from objects import logger as logger_module
 | 
			
		||||
import logging
 | 
			
		||||
 | 
			
		||||
logger: logging.Logger = logger_module.get_logger(__name__)
 | 
			
		||||
 | 
			
		||||
class AIProcessor:
 | 
			
		||||
    def __init__(self, api_key: str, model: str = "gpt-4.1"):
 | 
			
		||||
@@ -62,6 +66,12 @@ class AIProcessor:
 | 
			
		||||
                        processor=self,
 | 
			
		||||
                    )
 | 
			
		||||
                    outputs.append(r) if r else None
 | 
			
		||||
                # Make sure the two last messages from user has an image, but set disable_image to True for the others
 | 
			
		||||
                for msg in self.session.messages[-2:]:
 | 
			
		||||
                    msg.disable_image = True
 | 
			
		||||
                logger.debug(
 | 
			
		||||
                    self.session.messages
 | 
			
		||||
                )
 | 
			
		||||
                if reexec:
 | 
			
		||||
                    img = ai.compute.screenshot_to_base64(
 | 
			
		||||
                        ai.compute.take_screenshot()
 | 
			
		||||
@@ -86,15 +96,6 @@ class AIProcessor:
 | 
			
		||||
                aic.Message(role="assistant", content=output_text)
 | 
			
		||||
            )
 | 
			
		||||
 | 
			
		||||
            # re-execute if needed
 | 
			
		||||
            if reexec:
 | 
			
		||||
                img = ai.compute.screenshot_to_base64(
 | 
			
		||||
                    ai.compute.take_screenshot()
 | 
			
		||||
                )
 | 
			
		||||
 | 
			
		||||
                outputs.append(
 | 
			
		||||
                    *self.process(nextsteps, img)
 | 
			
		||||
                )
 | 
			
		||||
            return outputs
 | 
			
		||||
        except Exception as e:
 | 
			
		||||
            traceback.print_exc()
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										42
									
								
								objects/logger.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								objects/logger.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,42 @@
 | 
			
		||||
import logging
 | 
			
		||||
import os
 | 
			
		||||
from logging.handlers import RotatingFileHandler
 | 
			
		||||
 | 
			
		||||
# Configuration values
 | 
			
		||||
LOG_LEVEL = os.getenv("LOG_LEVEL", "INFO").upper()
 | 
			
		||||
LOG_FORMAT = "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
 | 
			
		||||
LOG_DIR = os.getenv("LOG_DIR", os.path.join(os.getcwd(), "logs"))
 | 
			
		||||
 | 
			
		||||
# Ensure log directory exists
 | 
			
		||||
os.makedirs(LOG_DIR, exist_ok=True)
 | 
			
		||||
 | 
			
		||||
# Log file path
 | 
			
		||||
LOG_FILE = os.path.join(LOG_DIR, "app.log")
 | 
			
		||||
 | 
			
		||||
# Create root logger
 | 
			
		||||
logger = logging.getLogger("gpt-agent")
 | 
			
		||||
logger.setLevel(LOG_LEVEL)
 | 
			
		||||
 | 
			
		||||
# Formatter
 | 
			
		||||
formatter = logging.Formatter(LOG_FORMAT)
 | 
			
		||||
 | 
			
		||||
# Console handler
 | 
			
		||||
console_handler = logging.StreamHandler()
 | 
			
		||||
console_handler.setLevel(LOG_LEVEL)
 | 
			
		||||
console_handler.setFormatter(formatter)
 | 
			
		||||
logger.addHandler(console_handler)
 | 
			
		||||
 | 
			
		||||
# Rotating file handler
 | 
			
		||||
file_handler = RotatingFileHandler(LOG_FILE, maxBytes=5*1024*1024, backupCount=5)
 | 
			
		||||
file_handler.setLevel(LOG_LEVEL)
 | 
			
		||||
file_handler.setFormatter(formatter)
 | 
			
		||||
logger.addHandler(file_handler)
 | 
			
		||||
 | 
			
		||||
def get_logger(name: str | None = None) -> logging.Logger:
 | 
			
		||||
    """
 | 
			
		||||
    Retrieve a configured logger instance. If name is provided,
 | 
			
		||||
    returns a child logger of the configured root logger.
 | 
			
		||||
    """
 | 
			
		||||
    if name:
 | 
			
		||||
        return logger.getChild(name)
 | 
			
		||||
    return logger
 | 
			
		||||
		Reference in New Issue
	
	Block a user