使用logrotate分割日志

使用logrotate分割日志

场景:需要对使用docker-compose部署的odoo15程序的日志按日期进行分割

  1. 修改odoo.conf

     # 添加或取消注释
     logfile = /opt/log/odoo.log
  2. 修改docker-compose.yml 以挂载日志文件到服务器

         volumes:
           # 注意:使用./web-data:/var/lib/odoo 系统运行会报错;只有使用 web-data:/var/lib/odoo 系统才会正常。
          - web-data:/var/lib/odoo
          - ./conf:/etc/odoo
          - ~/B8ERP/B8_addons:/mnt/B8_addons
          - ~/B8ERP/Customer/GDXF:/mnt/Customer/GDXF
          - ~/B8ERP/Customer/GDXY:/mnt/Customer/GDXY
          - ~/B8ERP/OCA/account-financial-tools:/mnt/account-financial-tools
          - ~/B8ERP/OCA/reporting-engine:/mnt/reporting-engine
          - ~/B8ERP/OCA/contract:/mnt/contract
          - ~/B8ERP/OCA/sale-workflow:/mnt/sale-workflow
          - ~/B8ERP/OCA/account-closing:/mnt/account-closing
          - ~/B8ERP/OCA/stock-logistics-reporting:/mnt/stock-logistics-reporting
          - ~/B8ERP/OCA/stock-logistics-workflow:/mnt/stock-logistics-workflow
          - ~/B8ERP/OCA/product-attribute:/mnt/product-attribute
          - ~/B8ERP/OCA/maintenance:/mnt/maintenance
          - ~/B8ERP/OCA/hr-expense:/mnt/hr-expense
          - ~/B8ERP/OCA/server-ux:/mnt/server-ux
          - ~/B8ERP/OCA/purchase-workflow:/mnt/purchase-workflow
          - ~/B8ERP/om_account:/mnt/om_account
          - /opt/log:/opt/log
  3. 进入容器内给/opt/log 777权限(存放log的文件夹路径)

  4. 在/etc/logrotate.d/目录下创建一个新的logrotate配置文件

     /opt/log/odoo.log {
        su root root
        daily
        missingok
        rotate 31
        dateext
        notifempty
        sharedscripts
        postrotate
      systemctl restart xc.service
        endscript
     }

    daily:每天轮换一次

    missingok:如果日志文件丢失,不要写错误消息。

    rotate:保留14个旧日志文件

    dateext:文件以创建日期命名

    compress:压缩日志文件

    notifempty:如果日志文件为空,请不要轮换它

    sharedscripts:所有的日志文件都轮转完毕后统一执行一次脚本

    postrotate:通知应用程序重新打开日志文件

  5. 重启docker-compose

  6. 使用:logrotate --force /etc/logrotate.d/odoo-log 测试是否成功

  7. 成功的话会有 文件名-日期 格式的文件生成