账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    Docker 容器怎么收集Django的日志
    100
    0

    问题描述

    Docker 部署 Django 应用无法自动收集 Django 的日志

    问题出现的环境背景及自己尝试过哪些方法

    1、自定义的 logging 模块,在项目中需要写入日志的地方调用,并按照日期将日志文件存入文件中,所有日志收集到 logfile 文件夹中
    2、docker-compose.yml 中将 logfile 映射到本地(docker volume)

    本想着每天能够自动收集日志文件,但是发现不管是容器内部,还是 volume 中都没有收集。偶然在知乎上看到一篇文章,说既然用 Docker,就不要想着把日志写入文件,而是配置 settings 将日志标准输出,再使用 Fluented 收集,不知道是否这个原因。

    相关代码

    // 请把代码文本粘贴到下方(请勿用图片代替代码)
    1、自定义的 logger:

    import os  
    import time  
    import logging  
    from logging.handlers import RotatingFileHandler  
      
      
    def log(name):  
        logger = logging.getLogger(name)  
        logger.setLevel(logging.DEBUG)  \# 设置日志级别  
      
      \# 日志文件名  
      path = os.path.split(os.path.realpath(\_\_file\_\_ + "/../../"))\[0\] + r"/logfile/" \+ time. \\  
            strftime("%Y-%m-%d", time.gmtime())  
      
        fh = RotatingFileHandler(path, maxBytes\=1024 \* 1024 \* 100, backupCount\=20, encoding\='utf-8')  
        fh.namer = lambda x: "backup." \+ x.split(".")\[-1\]  
      
        fmt = logging.Formatter("%(asctime)s %(levelname)s %(funcName)s:%(lineno)d  %(pathname)s  %(message)s")  \# 日志输出格式  
      fh.setFormatter(fmt)  
        logger.addHandler(fh)  
      
        return logger

    2、使用:

    from utils.common.LogHandler import log  
      
    logger = log(\_\_name\_\_)  
    logger.info('日志记录!')

    3、docker-compose.yml

    djangoapp:
        build: .
        volumes:
          - .:/opt/services/djangoapp/src
          - logfile:/opt/services/djangoapp/src/CBS/logfile/
          - static_volume:/opt/services/djangoapp/src/CBS/static_all/
        networks:
          - nginx_network
          - database1_network
        depends_on:
          - database1
        restart: always
        environment:
          - TZ=Asia/Shanghai
    ...
    volumes:
      database1_volume:
      static_volume:
      logfile:

    你期待的结果是什么?实际看到的错误信息又是什么?

    希望能够实现自动按照之前在本地一样,能够按照日期收集日志文件。

    0
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 10 元积分
        全部回答
    • 0
    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部