当前位置:论坛首页 > BUG提交 > Linux面板

【待反馈】python项目使用自定义命令启动导致日志切割找不

发表在 BUG提交2024-8-12 16:11 [复制链接] 9 705

本帖最后由 宝塔用户_mwxxim 于 2024-10-4 12:47 编辑

错误处:
|---Python项目[maotouying]的日志分割任务出错
=================已完成所有日志切割任务==================
----------------------------------------------------------------------------
★[2024-08-12 15:58:18] Successful
----------------------------------------------------------------------------
Traceback (most recent call last):
  File "/www/server/panel/script/run_log_split.py", line 137, in main
    for_split_func(logsplit, project)
  File "class/projectModel/pythonModel.py", line 3256, in for_split
    logsplit(project["name"], log_file, project["name"])
  File "/www/server/panel/script/run_log_split.py", line 100, in __call__
    if self.stype == 'size' and os.path.getsize(sfile) < self.log_size:
  File "/www/server/panel/pyenv/lib/python3.7/genericpath.py", line 50, in getsize
    return os.stat(filename).st_size
FileNotFoundError: [Errno 2] No such file or directory: '/www/wwwlogs/python/my/uwsgi.log'


关键代码路径

/www/server/panel/class/projectModel/pythonModel.py
  1. def for_split(self, logsplit, project):
  2.         """日志切割方法调用
  3.         @author baozi <202-03-20>
  4.         @param:
  5.             logsplit  ( LogSplit ):  日志切割方法,传入 pjanme:项目名称 sfile:日志文件路径 log_prefix:产生的日志文件前缀
  6.             project  ( dict ):  项目内容
  7.         @return
  8.         """
  9.         if project['project_config'["stype" == "python":
  10.             log_file = project['project_config'["logpath" + "/error.log"
  11.             logsplit(project["name", log_file, project["name")
  12.         elif project['project_config'["stype" == "gunicorn":
  13.             log_file = project['project_config'["logpath" + "/gunicorn_error.log"
  14.             logsplit(project["name", log_file, project["name" + "_error")
  15.             log_file2 = project['project_config'["logpath" + "/gunicorn_acess.log"
  16.             logsplit(project["name", log_file2, project["name" + "_acess")
  17.         else:
  18.             log_file = project['project_config'["logpath" + "/uwsgi.log"
  19.             logsplit(project["name", log_file, project["name")
复制代码


需要加一个判断,即可解决
if project['project_config']["stype"] == "python" or project['project_config']["stype"] == "command":
使用道具 举报 只看该作者 回复
发表于 2024-8-13 14:24:01 | 显示全部楼层
您好,您这边的面板版本是多少,是什么操作系统呢。方便看一下您这个/www/wwwlogs/python/my/uwsgi.log文件是否存在,以及文件的权限是多少
使用道具 举报 回复 支持 反对
发表于 2024-8-13 18:13:30 | 显示全部楼层
运维技术阿闯 发表于 2024-8-13 14:24
您好,您这边的面板版本是多少,是什么操作系统呢。方便看一下您这个/www/wwwlogs/python/my/uwsgi.log文件 ...

你没明白我的意思,我的项目是通过命令来启动的,但是面板源码没有正确判断,导致返回错误的日志路径,也就是uwsgi
else:
            log_file = project['project_config'["logpath" + "/uwsgi.log"
            logsplit(project["name", log_file, project["name")
使用道具 举报 回复 支持 反对
发表于 2024-8-14 11:35:10 | 显示全部楼层
宝塔用户_mwxxim 发表于 2024-8-13 18:13
你没明白我的意思,我的项目是通过命令来启动的,但是面板源码没有正确判断,导致返回错误的日志路径,也 ...

方便发一下您的项目包以及您的面板是几版本,是什么操作系统,如何配置的,方便发我一下吗,这边测试一下
使用道具 举报 回复 支持 反对
发表于 2024-8-18 20:07:18 | 显示全部楼层
我也遇到类似的问题,
面板版本:Linux面板9.1.0
启动命令:uvicorn main:app (自定义,会生成一个error.log,然后日志分割提示找不到uwsgi.log;使用uwsgi或gunicorn启动也是一样,uwsgi日志会切割,但是error.log不会被切割;尝试将输出重定向到其他文件也没有生效)
项目:fastapi

  1. import uvicorn
  2. from fastapi import FastAPI

  3. app = FastAPI()


  4. @app.get("/")
  5. async def index():
  6.     print("Hello World")
  7.     return {"message": "Hello World"}

  8. if __name__ == '__main__':
  9.     uvicorn.run("main:app")
复制代码
使用道具 举报 回复 支持 反对
发表于 2024-8-19 14:40:51 | 显示全部楼层
abelWang 发表于 2024-8-18 20:07
我也遇到类似的问题,
面板版本:Linux面板9.1.0
启动命令:uvicorn main:app (自定义,会生成一个error.l ...

您好,您按照楼主的方式是否能够解决呢
使用道具 举报 回复 支持 反对
发表于 2024-10-4 12:20:16 | 显示全部楼层
现在还是会日志分割失败,我已经提交BUG这么久,你们都没修复吗,算了,我以后手动修复吧,
使用道具 举报 回复 支持 反对
发表于 2024-10-4 12:26:55 | 显示全部楼层
abelWang 发表于 2024-8-18 20:07
我也遇到类似的问题,
面板版本:Linux面板9.1.0
启动命令:uvicorn main:app (自定义,会生成一个error.l ...

就是宝塔的bug,你改一下宝塔源码就可以
使用道具 举报 回复 支持 反对
发表于 2024-10-9 16:55:23 | 显示全部楼层
本帖最后由 宝塔用户_cnuejm 于 2024-10-9 17:05 编辑

我服了 之前我就发现了但是没在意今天服务器直接死机了,安全模式进来看到日志100多G 不想要日志的同学可以加个计划任务定时清空
  1. #!/bin/bash

  2. # 定义要清理的目录
  3. LOG_DIR="/www/wwwlogs/python"

  4. # 遍历目录下的所有子文件夹
  5. for dir in "$LOG_DIR"/*/; do
  6.     # 检查是否为目录
  7.     if [ -d "$dir" ]; then
  8.         # 遍历目录下的所有 .log 文件
  9.         for log_file in "$dir"*.log; do
  10.             # 检查文件是否存在
  11.             if [ -f "$log_file" ]; then
  12.                 # 清空文件内容
  13.                 > "$log_file"
  14.                 echo "已清空文件: $log_file"
  15.             fi
  16.         done
  17.     fi
  18. done

  19. echo "所有 .log 文件已清空。"
复制代码

使用道具 举报 回复 支持 反对
发表于 2024-10-29 09:35:05 | 显示全部楼层
您好,就是计划任务切割python网站日志  不存在,这个问题反馈了
使用道具 举报 回复 支持 反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

普通问题处理

论坛响应时间:72小时

问题处理方式:排队(仅解答)

工作时间:白班:9:00 - 18:00

紧急运维服务

响应时间:3分钟

问题处理方式:宝塔专家1对1服务

工作时间:工作日:9:00 - 18:30

宝塔专业团队为您解决服务器疑难问题

立即付费处理

工作时间:09:00至24:00

快速回复 返回顶部 返回列表