one-api icon indicating copy to clipboard operation
one-api copied to clipboard

增加定时清理 log 日志(急)

Open c121914yu opened this issue 10 months ago • 4 comments

例行检查

  • [x] 我已确认目前没有类似 issue
  • [x] 我已确认我已升级到最新版本
  • [x] 我已完整查看过项目 README,已确定现有版本无法满足需求
  • [x] 我理解并愿意跟进此 issue,协助测试和提供反馈
  • [x] 我理解并认可上述内容,并理解项目维护者精力有限,不遵循规则的 issue 可能会被无视或直接关闭

log会保存在 /data/log 下,但是不会自动清除,长时间运行后导致超出临时存储限制。 并且,挂载pvc后,每次重启后,并不会清空日志,导致磁盘直接满了无法启动。

解决方案

  1. 页面上增加手动清空log日志
  2. 定时清理

c121914yu avatar Apr 04 '24 04:04 c121914yu

自定义一个 crontab 任务就行了吧,这样你想怎么定制都可以


要建立一个自动清理任务,通常使用 cron 作业是最简单的方法。 下面是如何设置一个 cron 作业来定期清空 /data/log 目录下的 one-api.log 日志文件的步骤:

  1. 打开终端。

  2. 运行 crontab -e 命令来编辑当前用户的 cron 文件。 如果你是第一次运行 crontab -e 可能会让你选择一个文本编辑器来编辑这个文件。

  3. 在打开的文件中,你要添加一行,指定 cron 作业的时间和运行的命令。 下面是 cron 的时间格式:

    * * * * * command to be executed
    - - - - -
    | | | | |
    | | | | +----- day of week (0 - 6) (Sunday=0)
    | | | +------- month (1 - 12)
    | | +--------- day of month (1 - 31)
    | +----------- hour (0 - 23)
    +------------- min (0 - 59)
    

    举例来说,如果你想每天凌晨3点清空日志文件,你可以添加以下内容:

    0 3 * * * > /data/log/one-api.log
    

    这里的 > 是重定向操作符,用于清空文件内容。 如果你想删除日志文件而不是清空内容,那么可以使用 rm 命令,不过这样会完全删除文件,如果软件依赖于这个文件的存在,它可能会出错,所以使用 > 更安全。

  4. 保存并退出编辑器。 cron 将自动安装你的新作业。

确保 /data/log/one-api.log 文件对于执行 cron 作业的用户是可写的。 否则,清空命令将不起作用。

注意:在某些系统上,例如 Ubuntu,可能要求你使用 sudo 来运行 crontab -e 命令来编辑系统级别的 cron 作业,而不仅仅是当前用户的。

RexWzh avatar Apr 04 '24 06:04 RexWzh

自定义一个 crontab 任务就行了吧,这样你想怎么定制都可以


要建立一个自动清理任务,通常使用 cron 作业是最简单的方法。 下面是如何设置一个 cron 作业来定期清空 /data/log 目录下的 one-api.log 日志文件的步骤:

  1. 打开终端。

  2. 运行 crontab -e 命令来编辑当前用户的 cron 文件。 如果你是第一次运行 crontab -e 可能会让你选择一个文本编辑器来编辑这个文件。

  3. 在打开的文件中,你要添加一行,指定 cron 作业的时间和运行的命令。 下面是 cron 的时间格式:

    * * * * * command to be executed
    - - - - -
    | | | | |
    | | | | +----- day of week (0 - 6) (Sunday=0)
    | | | +------- month (1 - 12)
    | | +--------- day of month (1 - 31)
    | +----------- hour (0 - 23)
    +------------- min (0 - 59)
    

    举例来说,如果你想每天凌晨3点清空日志文件,你可以添加以下内容:

    0 3 * * * > /data/log/one-api.log
    

    这里的 > 是重定向操作符,用于清空文件内容。 如果你想删除日志文件而不是清空内容,那么可以使用 rm 命令,不过这样会完全删除文件,如果软件依赖于这个文件的存在,它可能会出错,所以使用 > 更安全。

  4. 保存并退出编辑器。 cron 将自动安装你的新作业。

确保 /data/log/one-api.log 文件对于执行 cron 作业的用户是可写的。 否则,清空命令将不起作用。

注意:在某些系统上,例如 Ubuntu,可能要求你使用 sudo 来运行 crontab -e 命令来编辑系统级别的 cron 作业,而不仅仅是当前用户的。

可以是可以,不过在 k8s 中有点麻烦,还得连接 pod 才能删除,并且可能多个节点,名字不是固定的。每个系统都得操作下,有点麻烦。

c121914yu avatar Apr 04 '24 06:04 c121914yu

我得想一想怎么处理好一些,感觉由服务自己去清理日志有点奇怪

songquanpeng avatar Apr 05 '24 15:04 songquanpeng

我得想一想怎么处理好一些,感觉由服务自己去清理日志有点奇怪

加个手动清理或者可配置,或者只有error才写入,其他不要写入。 现在几天不用,好几个G日志,,时不时担心服务器爆满。。。

c121914yu avatar Apr 25 '24 12:04 c121914yu