【问题标题】:How to get all prints on django production server with apache如何使用 apache 在 django 生产服务器上获取所有打印
【发布时间】:2015-12-20 21:40:44
【问题描述】:

请告诉我如何获取我在本地运行 ./manage.py runserver 时看到的所有打印结果。我不想使用记录器。理想情况下,我想连接到我的 manage.py 并查看服务器现在正在为我打印什么。 我试过django print information on production server 没有成功。 我知道我只关注 tail -f 日志文件,我会看到最后几行,但我找不到我的打印件在哪里。请帮忙。 这是我的日志记录配置:

LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'filters': {
    'require_debug_false': {
        '()': 'django.utils.log.RequireDebugFalse'
    },
    'require_debug_true': {
        '()': 'django.utils.log.RequireDebugTrue'
    }
},
'formatters': {
    'main_formatter': {
        'format': '%(levelname)s:%(name)s: %(message)s '
                 '(%(asctime)s; %(filename)s:%(lineno)d)',
        'datefmt': "%Y-%m-%d %H:%M:%S",
    },
},
'handlers': {
    'mail_admins': {
        'level': 'ERROR',
        'filters': ['require_debug_false'],
        'class': 'django.utils.log.AdminEmailHandler'
    },
    'console':{
        #'level': 'DEBUG',
        'level': 'ERROR',
        'filters': ['require_debug_true'],
        'class': 'logging.StreamHandler',
        'formatter': 'main_formatter',
    },
    'production_file':{
        'level' : 'INFO',
        'class' : 'logging.handlers.RotatingFileHandler',
        'filename' : 'logs/main.log',
        'maxBytes': 1024*1024*5, # 5 MB
        'backupCount' : 7,
        'formatter': 'main_formatter',
        'filters': ['require_debug_false'],
    },
    'debug_file':{
        'level' : 'DEBUG',
        'class' : 'logging.handlers.RotatingFileHandler',
        'filename' : 'logs/main_debug.log',
        'maxBytes': 1024*1024*5, # 5 MB
        'backupCount' : 7,
        'formatter': 'main_formatter',
        'filters': ['require_debug_true'],
    },
    'null': {
        "class": 'django.utils.log.NullHandler',
    }
},
'loggers': {
    'django.request': {
        'handlers': ['mail_admins', 'console'],
        'level': 'ERROR',
        'propagate': True,
    },
    'django': {
        'handlers': ['null', ],
    },
    'py.warnings': {
        'handlers': ['null', ],
    },
    '': {
        'handlers': ['console', 'production_file', 'debug_file'],
        'level': "DEBUG",
    },
}

}

【问题讨论】:

  • 为什么你不想使用日志?是最简单的解决方案,可以让您完全按照自己的需要去做。

标签: django logging printing production


【解决方案1】:

如果您在生产设置中运行您的应用程序,即 APACHE 服务器,您可以在位于目的地的文件中找到打印件,该文件是您在 apache 配置中配置的。 例如:'ErrorLog /var/log/httpd-error.log'

【讨论】:

  • 谢谢!这真的很有帮助。
  • 所有其他人都投了反对票,但你给了我我需要的解决方案。
  • @DmitryYudin 如果您在问题中提供了一些背景和基本原理,您可能会从“其他人”那里得到更具建设性的回答。 ;)
【解决方案2】:

Django 可以在没有 master 的情况下作为多线程服务器运行,因此没有简单的方法可以将所有 std 输出连接在一起。日志记录是这里最简单和最好的解决方案,您可以定义许多日志处理程序,甚至将所有日志发送到某个套接字,一些简单的日志服务器将驻留在其中捕获所有日志并将它们打印到控制台。在屏幕上运行该服务器将允许您连接到它并查看它的一些最新消息。

【讨论】:

    猜你喜欢
    • 2011-08-04
    • 2013-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-29
    相关资源
    最近更新 更多