mirror of
https://github.com/tcsenpai/agenticSeek.git
synced 2025-06-07 11:35:29 +00:00
feat : logger class for better logging
This commit is contained in:
parent
a5c5061a2f
commit
a09b6bf8aa
@ -18,19 +18,18 @@ import random
|
|||||||
import os
|
import os
|
||||||
import shutil
|
import shutil
|
||||||
import markdownify
|
import markdownify
|
||||||
import logging
|
|
||||||
import sys
|
import sys
|
||||||
import re
|
import re
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
from utility import pretty_print, animate_thinking
|
from utility import pretty_print, animate_thinking
|
||||||
|
from logger import Logger
|
||||||
else:
|
else:
|
||||||
from sources.utility import pretty_print, animate_thinking
|
from sources.utility import pretty_print, animate_thinking
|
||||||
|
from sources.logger import Logger
|
||||||
logging.basicConfig(filename='browser.log', level=logging.ERROR,
|
|
||||||
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')
|
|
||||||
|
|
||||||
def get_chrome_path() -> str:
|
def get_chrome_path() -> str:
|
||||||
|
"""Get the path to the Chrome executable."""
|
||||||
if sys.platform.startswith("win"):
|
if sys.platform.startswith("win"):
|
||||||
paths = [
|
paths = [
|
||||||
"C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe",
|
"C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe",
|
||||||
@ -111,14 +110,11 @@ class Browser:
|
|||||||
"""Initialize the browser with optional AntiCaptcha installation."""
|
"""Initialize the browser with optional AntiCaptcha installation."""
|
||||||
self.js_scripts_folder = "./sources/web_scripts/" if not __name__ == "__main__" else "./web_scripts/"
|
self.js_scripts_folder = "./sources/web_scripts/" if not __name__ == "__main__" else "./web_scripts/"
|
||||||
self.anticaptcha = "https://chrome.google.com/webstore/detail/nopecha-captcha-solver/dknlfmjaanfblgfdfebhijalfmhmjjjo/related"
|
self.anticaptcha = "https://chrome.google.com/webstore/detail/nopecha-captcha-solver/dknlfmjaanfblgfdfebhijalfmhmjjjo/related"
|
||||||
|
self.logger = Logger("browser.log")
|
||||||
try:
|
try:
|
||||||
self.driver = driver
|
self.driver = driver
|
||||||
self.wait = WebDriverWait(self.driver, 10)
|
self.wait = WebDriverWait(self.driver, 10)
|
||||||
self.logger = logging.getLogger(__name__)
|
|
||||||
self.logger.info("Browser initialized successfully")
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logging.basicConfig(filename='browser.log', level=logging.ERROR,
|
|
||||||
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')
|
|
||||||
raise Exception(f"Failed to initialize browser: {str(e)}")
|
raise Exception(f"Failed to initialize browser: {str(e)}")
|
||||||
self.driver.get("https://www.google.com")
|
self.driver.get("https://www.google.com")
|
||||||
if anticaptcha_manual_install:
|
if anticaptcha_manual_install:
|
||||||
@ -142,7 +138,7 @@ class Browser:
|
|||||||
message="stuck on 'checking browser' or verification screen"
|
message="stuck on 'checking browser' or verification screen"
|
||||||
)
|
)
|
||||||
self.apply_web_safety()
|
self.apply_web_safety()
|
||||||
self.logger.info(f"Navigated to: {url}")
|
self.logger.log(f"Navigated to: {url}")
|
||||||
return True
|
return True
|
||||||
except TimeoutException as e:
|
except TimeoutException as e:
|
||||||
self.logger.error(f"Timeout waiting for {url} to load: {str(e)}")
|
self.logger.error(f"Timeout waiting for {url} to load: {str(e)}")
|
||||||
@ -167,7 +163,7 @@ class Browser:
|
|||||||
return (word_count >= 5 and (has_punctuation or is_long_enough))
|
return (word_count >= 5 and (has_punctuation or is_long_enough))
|
||||||
|
|
||||||
def get_text(self) -> str | None:
|
def get_text(self) -> str | None:
|
||||||
"""Get page text and convert it to README (Markdown) format."""
|
"""Get page text."""
|
||||||
try:
|
try:
|
||||||
soup = BeautifulSoup(self.driver.page_source, 'html.parser')
|
soup = BeautifulSoup(self.driver.page_source, 'html.parser')
|
||||||
|
|
||||||
@ -450,8 +446,6 @@ class Browser:
|
|||||||
input_elements = self.driver.execute_script(script)
|
input_elements = self.driver.execute_script(script)
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
logging.basicConfig(level=logging.INFO)
|
|
||||||
|
|
||||||
driver = create_driver()
|
driver = create_driver()
|
||||||
browser = Browser(driver, anticaptcha_manual_install=True)
|
browser = Browser(driver, anticaptcha_manual_install=True)
|
||||||
time.sleep(10)
|
time.sleep(10)
|
||||||
|
55
sources/logger.py
Normal file
55
sources/logger.py
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
import os, sys
|
||||||
|
from typing import List, Tuple, Type, Dict, Tuple
|
||||||
|
import datetime
|
||||||
|
import logging
|
||||||
|
|
||||||
|
class Logger:
|
||||||
|
def __init__(self, log_filename):
|
||||||
|
self.folder = '.logs'
|
||||||
|
self.create_folder(self.folder)
|
||||||
|
self.log_path = os.path.join(self.folder, log_filename)
|
||||||
|
self.enabled = True
|
||||||
|
self.logger = None
|
||||||
|
if self.enabled:
|
||||||
|
self.create_logging(log_filename)
|
||||||
|
|
||||||
|
def create_logging(self, log_filename):
|
||||||
|
self.logger = logging.getLogger(log_filename)
|
||||||
|
self.logger.setLevel(logging.DEBUG)
|
||||||
|
if not self.logger.handlers:
|
||||||
|
file_handler = logging.FileHandler(self.log_path)
|
||||||
|
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
|
||||||
|
file_handler.setFormatter(formatter)
|
||||||
|
self.logger.addHandler(file_handler)
|
||||||
|
|
||||||
|
def create_folder(self, path):
|
||||||
|
"""Create log dir"""
|
||||||
|
try:
|
||||||
|
if not os.path.exists(path):
|
||||||
|
os.makedirs(path, exist_ok=True)
|
||||||
|
return True
|
||||||
|
except Exception as e:
|
||||||
|
self.enabled = False
|
||||||
|
return False
|
||||||
|
|
||||||
|
def log(self, message, level=logging.INFO):
|
||||||
|
if self.enabled:
|
||||||
|
self.logger.log(level, message)
|
||||||
|
|
||||||
|
def info(self, message):
|
||||||
|
self.log(message)
|
||||||
|
|
||||||
|
def error(self, message):
|
||||||
|
self.log(message, level=logging.ERROR)
|
||||||
|
|
||||||
|
def warning(self, message):
|
||||||
|
self.log(message, level=logging.WARN)
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
lg = Logger("test.log")
|
||||||
|
lg.log("hello")
|
||||||
|
lg2 = Logger("toto.log")
|
||||||
|
lg2.log("yo")
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user