Spaces:
Running
Running
feat: make logger timezone configurable via TZ_OFFSET
Browse files- browser/cookie_validator.py +1 -1
- browser/instance.py +1 -1
- browser/navigation.py +1 -1
- requirements.txt +1 -1
- utils/cookie_manager.py +1 -1
- utils/logger.py +26 -0
browser/cookie_validator.py
CHANGED
|
@@ -82,4 +82,4 @@ class CookieValidator:
|
|
| 82 |
"""
|
| 83 |
self.logger.error("Cookie失效,关闭实例")
|
| 84 |
time.sleep(1)
|
| 85 |
-
sys.exit(1)
|
|
|
|
| 82 |
"""
|
| 83 |
self.logger.error("Cookie失效,关闭实例")
|
| 84 |
time.sleep(1)
|
| 85 |
+
sys.exit(1)
|
browser/instance.py
CHANGED
|
@@ -229,4 +229,4 @@ def run_browser_instance(config, shutdown_event=None):
|
|
| 229 |
logger.info(f"实例正常退出,退出码: {e.code}")
|
| 230 |
except Exception as e:
|
| 231 |
# 这是一个最终的捕获,用于捕获所有未预料到的错误
|
| 232 |
-
logger.exception(f"运行 Camoufox 实例时发生未预料的严重错误: {e}")
|
|
|
|
| 229 |
logger.info(f"实例正常退出,退出码: {e.code}")
|
| 230 |
except Exception as e:
|
| 231 |
# 这是一个最终的捕获,用于捕获所有未预料到的错误
|
| 232 |
+
logger.exception(f"运行 Camoufox 实例时发生未预料的严重错误: {e}")
|
browser/navigation.py
CHANGED
|
@@ -83,4 +83,4 @@ def handle_successful_navigation(page: Page, logger, cookie_file_config, shutdow
|
|
| 83 |
logger.info(f"已在保持活动循环出错时截屏: {screenshot_filename}")
|
| 84 |
except Exception as screenshot_e:
|
| 85 |
logger.error(f"在保持活动循环出错时截屏失败: {screenshot_e}")
|
| 86 |
-
break # 如果页面关闭或出错,则退出循环
|
|
|
|
| 83 |
logger.info(f"已在保持活动循环出错时截屏: {screenshot_filename}")
|
| 84 |
except Exception as screenshot_e:
|
| 85 |
logger.error(f"在保持活动循环出错时截屏失败: {screenshot_e}")
|
| 86 |
+
break # 如果页面关闭或出错,则退出循环
|
requirements.txt
CHANGED
|
@@ -30,4 +30,4 @@ typing_extensions==4.14.0
|
|
| 30 |
ua-parser==1.0.1
|
| 31 |
ua-parser-builtins==0.18.0.post1
|
| 32 |
urllib3==2.4.0
|
| 33 |
-
yarl==1.20.1
|
|
|
|
| 30 |
ua-parser==1.0.1
|
| 31 |
ua-parser-builtins==0.18.0.post1
|
| 32 |
urllib3==2.4.0
|
| 33 |
+
yarl==1.20.1
|
utils/cookie_manager.py
CHANGED
|
@@ -195,4 +195,4 @@ class CookieManager:
|
|
| 195 |
env_value,
|
| 196 |
default_domain=".google.com",
|
| 197 |
logger=self.logger
|
| 198 |
-
)
|
|
|
|
| 195 |
env_value,
|
| 196 |
default_domain=".google.com",
|
| 197 |
logger=self.logger
|
| 198 |
+
)
|
utils/logger.py
CHANGED
|
@@ -1,4 +1,25 @@
|
|
| 1 |
import logging
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2 |
|
| 3 |
def setup_logging(log_file, prefix=None, level=logging.INFO):
|
| 4 |
"""
|
|
@@ -6,6 +27,8 @@ def setup_logging(log_file, prefix=None, level=logging.INFO):
|
|
| 6 |
支持一个可选的前缀,用于标识日志来源。
|
| 7 |
|
| 8 |
每次调用都会重新配置处理器,以适应多进程环境。
|
|
|
|
|
|
|
| 9 |
|
| 10 |
:param log_file: 日志文件的路径。
|
| 11 |
:param prefix: (可选) 要添加到每条日志消息开头的字符串前缀。
|
|
@@ -31,6 +54,9 @@ def setup_logging(log_file, prefix=None, level=logging.INFO):
|
|
| 31 |
ch.setLevel(level)
|
| 32 |
|
| 33 |
formatter = logging.Formatter(log_format)
|
|
|
|
|
|
|
|
|
|
| 34 |
fh.setFormatter(formatter)
|
| 35 |
ch.setFormatter(formatter)
|
| 36 |
|
|
|
|
| 1 |
import logging
|
| 2 |
+
import datetime
|
| 3 |
+
import os
|
| 4 |
+
|
| 5 |
+
def custom_timezone_converter(timestamp):
|
| 6 |
+
"""
|
| 7 |
+
将时间戳转换为指定时区 (默认 UTC+8/Asia/Shanghai) 的 struct_time。
|
| 8 |
+
时区通过环境变量 TZ_OFFSET (小时数) 配置。
|
| 9 |
+
"""
|
| 10 |
+
|
| 11 |
+
# 尝试从环境变量获取偏移量,默认为 8 (北京时间)
|
| 12 |
+
try:
|
| 13 |
+
offset_hours = float(os.getenv('TZ_OFFSET', 8))
|
| 14 |
+
except (ValueError, TypeError):
|
| 15 |
+
offset_hours = 8
|
| 16 |
+
|
| 17 |
+
# 创建时区对象
|
| 18 |
+
target_timezone = datetime.timezone(datetime.timedelta(hours=offset_hours))
|
| 19 |
+
|
| 20 |
+
# 转换时间
|
| 21 |
+
dt_time = datetime.datetime.fromtimestamp(timestamp, target_timezone)
|
| 22 |
+
return dt_time.timetuple()
|
| 23 |
|
| 24 |
def setup_logging(log_file, prefix=None, level=logging.INFO):
|
| 25 |
"""
|
|
|
|
| 27 |
支持一个可选的前缀,用于标识日志来源。
|
| 28 |
|
| 29 |
每次调用都会重新配置处理器,以适应多进程环境。
|
| 30 |
+
|
| 31 |
+
时间显示默认为 UTC+8 (北京时间),可通过环境变量 TZ_OFFSET 修改。
|
| 32 |
|
| 33 |
:param log_file: 日志文件的路径。
|
| 34 |
:param prefix: (可选) 要添加到每条日志消息开头的字符串前缀。
|
|
|
|
| 54 |
ch.setLevel(level)
|
| 55 |
|
| 56 |
formatter = logging.Formatter(log_format)
|
| 57 |
+
# 设置自定义的时间转换器
|
| 58 |
+
formatter.converter = custom_timezone_converter
|
| 59 |
+
|
| 60 |
fh.setFormatter(formatter)
|
| 61 |
ch.setFormatter(formatter)
|
| 62 |
|