>데이터 베이스 >MySQL 튜토리얼 >Django 애플리케이션에서 모든 SQL 쿼리를 어떻게 기록할 수 있나요?

Django 애플리케이션에서 모든 SQL 쿼리를 어떻게 기록할 수 있나요?

Patricia Arquette
Patricia Arquette원래의
2025-01-15 21:21:47195검색

How Can I Log All SQL Queries in My Django Application?

Django 앱에 모든 SQL 쿼리를 기록합니다.

이 문서에서는 관리 사이트의 쿼리를 포함하여 Django 애플리케이션에서 실행되는 모든 SQL 쿼리를 효과적으로 기록하는 방법을 안내합니다. 핵심은 settings.py 파일의 LOGGING 필드를 수정하는 것입니다.

구현 단계:

  1. 로깅 라이브러리 가져오기: 먼저 logging 라이브러리를 코드로 가져옵니다. 이를 통해 로깅 기능을 구성하고 처리할 수 있습니다.
<code class="language-python">import logging</code>
  1. 사용자 정의 프로세서 정의(선택 사항): SQL 쿼리 로그를 처리하기 위해 사용자 정의 프로세서를 생성하도록 선택할 수 있습니다. 이는 필수는 아니지만 로깅 동작을 더 효과적으로 제어할 수 있습니다.
<code class="language-python">class QueryHandler(logging.Handler):
    def emit(self, record):
        # 自定义处理SQL查询的逻辑
        pass</code>
  1. 로그 설정 구성: 다음 코드 조각을 settings.py 파일의 LOGGING 필드에 병합합니다. 이렇게 하면 SQL 쿼리 로깅이 활성화되고 정의된 프로세서로 출력이 전달됩니다.
<code class="language-python">LOGGING = {
    'version': 1,
    'filters': {
        'require_debug_true': {
            '()': 'django.utils.log.RequireDebugTrue',
        }
    },
    'handlers': {
        'console': {
            'level': 'DEBUG',
            'filters': ['require_debug_true'],
            'class': 'logging.StreamHandler',
        },
        'query_handler': {
            'level': 'DEBUG',
            'filters': [],
            'class': 'path.to.QueryHandler', # 将path.to.QueryHandler替换为您的自定义处理器的路径
        }
    },
    'loggers': {
        'django.db.backends': {
            'level': 'DEBUG',
            'handlers': ['query_handler'],
        }
    }
}</code>
  1. 로거 인스턴스화: 설정을 구성한 후 로거를 생성하여 로깅을 시작합니다.
<code class="language-python">logger = logging.getLogger('django.db.backends')</code>
  1. SQL 쿼리 로깅: 마지막으로 로거를 사용하여 애플리케이션 실행 중에 SQL 쿼리를 로깅합니다.
<code class="language-python">logger.debug(sql_query)</code>

이러한 단계를 수행하고 제공된 코드 조각을 settings.py 파일에 통합하면 Django는 모든 SQL 쿼리를 지정된 로그 파일에 기록하여 모든 데이터베이스 상호 작용에 대한 포괄적인 개요를 제공합니다. 'path.to.QueryHandler'를 사용자 정의 프로세서의 실제 경로로 바꾸는 것을 잊지 마세요. 맞춤형 프로세서가 필요하지 않은 경우 'query_handler' 부분을 제거하고 'console' 프로세서만 유지하면 됩니다.

위 내용은 Django 애플리케이션에서 모든 SQL 쿼리를 어떻게 기록할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.