hkfires commited on
Commit
d280cfc
·
verified ·
1 Parent(s): 2011b89

feat: make logger timezone configurable via TZ_OFFSET

Browse files
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