|
|
@@ -29,14 +29,22 @@ for _p in (BASE_DIR, STATS_DIR):
|
|
|
if _p not in sys.path:
|
|
|
sys.path.insert(0, _p)
|
|
|
|
|
|
-# ---- 日志:全项目唯一的 sink,所有模块的输出都汇总到根目录 logs/{日期}.log ----
|
|
|
+# ---- 日志:全项目唯一的 sink,所有模块的输出都汇总到 logs/{日期}.log ----
|
|
|
# 各业务模块只在自己作为 __main__ 独立运行时才配 sink,被 import 时不碰全局 logger,
|
|
|
# 故这里在 import 之前还是之后配置都一样,不再像从前那样靠 import 顺序决定日志去向。
|
|
|
+#
|
|
|
+# 日志目录优先取环境变量 CXX_LOG_DIR,缺省回落到项目根 logs/:
|
|
|
+# 服务器的日志采集只读固定目录(如容器内 /app/logs),而项目代码未必就放在该目录的上一级,
|
|
|
+# 故目录由部署环境指定、代码不写死;文件名固定 {time:YYYYMMDD}.log 以匹配采集端的格式要求。
|
|
|
+# 部署示例:CXX_LOG_DIR=/app/logs python start_cxx_spider.py
|
|
|
import schedule
|
|
|
from loguru import logger
|
|
|
|
|
|
+LOG_DIR = os.environ.get("CXX_LOG_DIR") or os.path.join(BASE_DIR, "logs")
|
|
|
+os.makedirs(LOG_DIR, exist_ok=True) # 提前建目录:目录不存在或无权限时在此直接报错,而非等到首条日志才暴露
|
|
|
+
|
|
|
logger.remove()
|
|
|
-logger.add(os.path.join(BASE_DIR, "logs", "{time:YYYYMMDD}.log"), encoding='utf-8', rotation="00:00",
|
|
|
+logger.add(os.path.join(LOG_DIR, "{time:YYYYMMDD}.log"), encoding='utf-8', rotation="00:00",
|
|
|
format="[{time:YYYY-MM-DD HH:mm:ss.SSS}] {level} {message}",
|
|
|
level="DEBUG", retention="7 day")
|
|
|
|