AWS弹性Beanstalk使用Python(Django)进行日志记录。

17 浏览
0 Comments

AWS弹性Beanstalk使用Python(Django)进行日志记录。

在AWS Elastic Beanstalk中,您如何管理应用程序日志?您将应用程序日志写入哪个文件?

在我的开发环境中,我使用以下日志配置,但是在AWS部署时无法正常工作。

DEBUG_LOG_DIR = BASE_DIR + "/django_debug.log"

LOGGING = {

'version': 1,

'disable_existing_loggers': True,

'formatters': {

'standard': {

'format' : "[%(asctime)s] %(levelname)s [%(name)s:%(lineno)s] %(message)s",

'datefmt' : "%d/%b/%Y %H:%M:%S"

},

},

'handlers': {

'null': {

'level':'DEBUG',

'class':'django.utils.log.NullHandler',

},

'log_file': {

'level':'DEBUG',

'class':'logging.handlers.RotatingFileHandler',

'filename': DEBUG_LOG_DIR,

'maxBytes': 50000,

'backupCount': 2,

'formatter': 'standard',

},

'console':{

'level':'INFO',

'class':'logging.StreamHandler',

'formatter': 'standard'

},

'mail_admins': {

'level': 'ERROR',

'class': 'django.utils.log.AdminEmailHandler',

},

},

'loggers': {

'repackager': {

'handlers': ['console', 'log_file'],

'level': 'DEBUG',

'propagate': True,

},

'django': {

'handlers':['console'],

'propagate': True,

'level':'WARN',

},

'django.db.backends': {

'handlers': ['console', 'log_file'],

'level': 'WARN',

'propagate': False,

},

'': {

'handlers': ['console', 'log_file'],

'level': 'DEBUG',

},

}

}

0
0 Comments

AWS Elastic Beanstalk是一个托管基于云的应用程序的服务,提供了自动化的部署和扩展功能。在使用Python和Django开发应用程序时,可能会遇到日志记录的问题。下面是一个关于在Elastic Beanstalk上使用Python(Django)进行日志记录的问题以及解决方法的整理。

问题:在Elastic Beanstalk上进行Python(Django)日志记录时遇到问题。

原因:默认情况下,Elastic Beanstalk不会自动创建日志文件夹,并且应用程序可能没有权限写入日志文件。

解决方法:创建一个配置文件,并在Django设置中配置日志记录。

首先,在应用程序的.ebextensions文件夹中创建一个配置文件(例如applogs.config),并添加以下内容,以创建日志文件夹并设置文件权限和所有者,以便应用程序可以在其中写入日志:

commands:
  00_create_dir:
    command: mkdir -p /var/log/app-logs
  01_change_permissions:
    command: chmod g+s /var/log/app-logs
  02_change_owner:
    command: chown wsgi:wsgi /var/log/app-logs

然后,在Django设置中添加以下内容,以配置日志记录:

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'file': {
            'level': 'DEBUG',
            'class': 'logging.FileHandler',
            'filename': '/var/log/app-logs/django.log',
        },
    },
    'loggers': {
        'django': {
            'handlers': ['file'],
            'level': 'DEBUG',
            'propagate': True,
        },
    },
}

为了使日志可以通过Web访问Elastic Beanstalk日志,还需要在.ebextensions文件夹中的配置文件中添加以下内容:

files:
  "/opt/elasticbeanstalk/tasks/taillogs.d/django.conf":
    mode: "000755"
    owner: root
    group: root
    content: |
      /var/log/app-logs/django.log

如果遇到权限错误,可以尝试添加以下命令,以避免最终的权限错误:

03_change_default_owner:
    command: setfacl -d -m g::rw /var/log/app-logs

通过创建配置文件和配置Django设置,可以在Elastic Beanstalk上使用Python(Django)进行日志记录。这些配置确保了日志文件夹的创建和正确的权限设置,以便应用程序可以写入日志文件。还可以通过添加其他命令来解决可能出现的权限错误。

0
0 Comments

AWS Elastic Beanstalk是一种托管服务,可以简化在AWS上运行的Web应用程序的部署和管理。当使用Python(Django)构建应用程序时,可能会遇到日志记录问题。本文将介绍一个解决方法。

问题的原因是,Django应用程序创建的日志文件的所有者和所有者组是root,但应用程序是通过wsgi用户运行的。因此,我们需要更改日志文件的所有者,并确保组可写。

首先,通过SSH连接到EC2实例。然后,使用root用户在/var/log目录下创建一个名为app_logs的文件夹:

mkdir /var/log/app_logs

接下来,执行以下操作:

cd /var/log/
chmod g+s app_logs/
setfacl -d -m g::rw app_logs/
chown wsgi:wsgi app_logs/

这些操作将确保在app_logs文件夹中创建的所有文件的所有者为wsgi,并且对于文件所属的组来说是可写的。

最后,将DEBUG_LOG_DIR更改为/var/log/app_logs/django_debug.log

需要注意的是,如果需要重新构建实例,则需要手动执行上述操作。此外,这些更改不会应用于自动扩展的实例。

为了确保这些操作始终生效,可以将命令写入.ebextensions文件中,在应用程序启动之前执行。

以上就是解决AWS Elastic Beanstalk中使用Python(Django)日志记录的问题的方法。通过更改日志文件的所有者和权限,我们可以确保日志文件可写,并与应用程序的运行用户匹配。

0
0 Comments

AWS Elastic Beanstalk是一种简化部署和扩展应用程序的服务。然而,在使用Python(Django)时,用户可能会遇到日志记录的问题。问题的原因和解决方法。

问题的原因是在使用Elastic Beanstalk时,用户想要通过指定一个处理程序来记录日志到特定的文件路径。然而,尝试实现这种方法时,用户遇到了权限被拒绝的错误。虽然通过SSH登录到实例并更改文件的权限可以解决问题,但这不是一个理想的解决方法。

解决方法是创建一个具有写权限的EC2启动脚本。这样,用户可以在启动应用程序时自动设置文件的权限,而无需手动更改。

总结起来,通过在Django的设置中配置一个处理程序,并指定日志文件路径,可以解决AWS Elastic Beanstalk中日志记录的问题。然而,用户可能会遇到权限被拒绝的错误。为了解决这个问题,可以创建一个具有写权限的EC2启动脚本来自动设置文件的权限。

0