【发布时间】:2021-09-17 20:08:19
【问题描述】:
我尝试在我的 django 项目(Django/Postgresql/Docker/Celery)中实现日志记录,但是当我在 linux 服务器中部署我的项目时出错(但它在本地工作)
FileNotFoundError: [Errno 2] No such file or directory: '/usr/src/app/logs/debug.log'
我在这篇 SO 帖子中读到了一个解决方案:Django: Unable to configure handler 'syslog'
但是首先我什至不明白为什么这个解决方案应该有效,而且我没有设法在我的项目中实施它。 我使用 Docker/docker-compose 所以我用 Dockerfile 安装 netcat 然后尝试 RUN nc -lU /logs/debug.log /logs/info.log 但它失败了(没有这样的文件或目录)
Dockerfile
# Pull the official base image
FROM python:3.8.3-alpine
# Set a work directory
WORKDIR /usr/src/app
# Set environment variables
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
# install psycopg2 dependencies
RUN apk update && apk add postgresql-dev gcc g++ python3-dev musl-dev netcat-openbsd
# create UNIX socket for logs files
#RUN nc -lU /logs/debug.log /logs/info.log
...
settings.py
...
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'loggers': {
'django': {
'handlers':['files_info','files_debug'],
'propagate': True,
'level':'INFO',
},
},
'handlers': {
'files_info': {
'level': 'INFO',
'class': 'logging.FileHandler',
'filename': './logs/info.log',
'formatter': 'mereva',
},
'files_debug': {
'level': 'DEBUG',
'class': 'logging.FileHandler',
'filename': './logs/debug.log',
'formatter': 'mereva',
},
},
'formatters': {
'mereva': {
'format': '{levelname} {asctime} {module} {message}',
'style': '{',
}
},
}
...
【问题讨论】:
-
在您的 django 设置中,您提供的路径为
./logs/debug.log,但在您的 docker 文件中,您提供的是/logs/debug.log。 -
我尝试改变,但也没有用
标签: django docker logging docker-compose netcat