inflearn logo
강의

Course

Instructor

Python Django Web Programming Taught by Silicon Valley Engineer

Let's learn how to log in Django.

Logging 질문

Resolved

126

ansghltjd9

2 asked

0

LOGGING ={
    'version':1,
    'disable_existing_loggers':False,
    'handlers':{
        'file':{
            'level':'DEBUG',
            'class':'logging.FileHandler',
            'filename':os.path.join(BASE_DIR, 'logs/django.log'),
            'formatter':'json',
        },
        'console':{
            'class':'logging.StreamHandler',
            'formatter':'json',
        },
    },
    'formatters':{
        'json':{
            'class': 'pythonjsonlogger.jsonlogger.JsonFormatter',
            'format': '%(asctime)s %(levelname)s %(name)s %(message)s',
        },
    },
    'root':{
        'handlers':['file','console'],
        'level':'DEBUG',
    },
    'loggers':{
        'django':{
            'handlers':['file','console'],
            'level': 'DEBUG',
            'propagate':False,
        },
    },
    

runserver 하는 순간 {"asctime": "2025-02-14 20:41:50,823", "levelname": "DEBUG", "name": "django.utils.autoreload", "message": "File C:\\Users\\moon\\miniforge3\\envs\\workout\\Lib\\site-packages\\PIL\\__init__.py first seen with mtime 1739352505.781736"} 이런 변경한 적 없는 것들이 자동리로드 되면서 콘솔에 계속 올라옵니다. 이유가 궁금합니다.

python django bootstrap rest-api drf

Answer 1

0

altoformula

안녕하세요 ansghltjd9님,

Django의 runserver를 실행할 때 자동으로 리로드(Auto-reload)가 발생하는 이유는 django.utils.autoreload가 파일 변경을 감지하는 방식 때문입니다.

Django의 개발 서버 (runserver)는 코드 변경을 감지하여 자동으로 재시작하는 기능이 있습니다. 이 기능은 django.utils.autoreload 모듈을 사용하여 특정 디렉터리의 파일 변경 여부를 감지합니다. 파일의 변경을 감지하는 주요 방식은 다음과 같습니다.

  • 파일의 수정 시간 (mtime) 감지

    • Django는 실행 중인 Python 파일들의 mtime (modified time, 수정 시간)을 주기적으로 확인합니다.

    • mtime이 변경되면 Django는 이를 코드 변경으로 간주하고 자동으로 리로드합니다.

  • sys.modules를 이용한 파일 추적

    • Python이 로드한 모든 모듈 (sys.modules)을 순회하면서 해당 파일의 변경 여부를 확인합니다.

로그에서 보시면 ...

{
  "asctime": "2025-02-14 20:41:50,823",
  "levelname": "DEBUG",
  "name": "django.utils.autoreload",
  "message": "File C:\\Users\\moon\\miniforge3\\envs\\workout\\Lib\\site-packages\\PIL\\__init__.py first seen with mtime 1739352505.781736"
}

Django가 PIL (Pillow 라이브러리)의 __init__.py 파일을 감지하고, 이 파일의 mtime 값(1739352505.781736)을 처음 인식했다고 로그에 남겼습니다.

 

보기가 불편하시다면 자동 리로드 기능을 끄고 실행하는 방법도 있습니다.

python manage.py runserver --noreload

이렇게 하면 django.utils.autoreload가 동작하지 않으므로, 불필요한 리로드를 방지할 수 있습니다.

Dockerfile 질문

0

76

2

0.0.0.0:8000 접속이 안됩니다

0

297

2

블로그 게시

0

171

2

{{form.as_p}} 사용방법 질문드립니다.

0

230

2

reverse vs reverse_lazy 사용 이유와 차이점을 이해하지 못 했습니다.

0

214

1

urls.py에 라우팅 하는 부분에서요.

0

162

2

handler, static 질문이 있습니다.

0

188

2

build: context 부분이 이해가 되지 않습니다.

1

215

3

직렬화 질문

0

152

1

Celery 수업중 세팅 질문드립니다.

1

181

1

6-1 질문

1

216

1

channels alternative?

1

207

1

크롬에서 서드 파티 쿠키 제한이라는 에러가 뜨는데 혹시 추가로 어떤걸 업데이트 해야지 정상작동 되는지 알 수 있을까요?

0

741

2

dock 환경설정에 대해 잘 이해가 가지 않습니다.

1

282

1

Django Authentication 중에 로그아웃 기능이 안됩니다 ㅠㅠ

1

344

1

학습방식

1

321

2

docker, flower 질문

0

303

1

docker 컨테이너 환경설정 문제

0

1642

1

celery-worker, beat, flower, docker-compose 질문

1

635

1

4-1 공식문서

1

252

1

장고 프로젝트 질문

2

292

1

복습

1

257

1

온라인 ide

1

325

2

vs code

1

367

2