LogáilLink to this heading

Leathnaíonn modúl logála Django tógáil Python: mod: loging.

Cumraítear logáil mar chuid den fheidhm ghinearálta django: func: django.setup, mar sin tá sé ar fáil i gcónaí mura bhfuil sé míchumasaithe go sainráite.

Cumraíocht logála réamhshocraithe DjangoLink to this heading

<logging-config-dictschema>De réir réamhshocraithe, úsáideann Django formáid Python: Ref: `Logging.config.dictConfig `.

Coinníollacha logála réamhshocLink to this heading

Is iad an tacar iomlán coinníollacha logála réamhshocraithe:

Nuair: Socrú: Is é DEBUG True:

  • Seolann an logálaí django ``teachtaireachtaí san ordlathas ``django (seachas django.server) ag an leibhéal INFO nó níos airde chuig an gconsól.

Nuair: Socrú: Is é DEBUG False:

  • Seolann an logálaí django teachtaireachtaí san ordlathas django (seachas django.server) le leibhéal ERRORCRITICAL go dt:class: AdminEmailHandler.

Neamhspleách ar luach: socrú: DEBUG:

  • Seolann logger:ref: django-server-logger teachtaireachtaí ag an leibhéal ``INFO ``nó níos airde chuig an gconsól.

Déanann gach logger seachas: ref: django-server-logger iomadú logáil chuig a dtuismitheoirí, suas go dtí an logger fréimhe django. Tá na láimhseálaithe console agus mail_admins ceangailte leis an logálaí fréimhe chun an t-iompar a thuairiscítear thuas a sholáthar.

Seolann réamhshocraithe Python féin taifid ar leibhéal ``RABHADH ``agus níos airde chuig an gconsól.

Sainmhíniú logála réamhLink to this heading

Oidhreann cumraíocht logála réamhshocraithe Django réamhshocraithe réamhshocraithe Python. Tá sé ar fáil mar django.utils.log.default_logging agus sainithe in:source: django/utils/log.py:

Code
{
    "version": 1,
    "disable_existing_loggers": False,
    "filters": {
        "require_debug_false": {
            "()": "django.utils.log.RequireDebugFalse",
        },
        "require_debug_true": {
            "()": "django.utils.log.RequireDebugTrue",
        },
    },
    "formatters": {
        "django.server": {
            "()": "django.utils.log.ServerFormatter",
            "format": "[{server_time}] {message}",
            "style": "{",
        }
    },
    "handlers": {
        "console": {
            "level": "INFO",
            "filters": ["require_debug_true"],
            "class": "logging.StreamHandler",
        },
        "django.server": {
            "level": "INFO",
            "class": "logging.StreamHandler",
            "formatter": "django.server",
        },
        "mail_admins": {
            "level": "ERROR",
            "filters": ["require_debug_false"],
            "class": "django.utils.log.AdminEmailHandler",
        },
    },
    "loggers": {
        "django": {
            "handlers": ["console", "mail_admins"],
            "level": "INFO",
        },
        "django.server": {
            "handlers": ["django.server"],
            "level": "INFO",
            "propagate": False,
        },
    },
}

Féach: ref: cumraing-loging maidir le conas an chumraíocht logála réamhshocraithe seo a chomhlánú nó a athsholáthar.

Síntí logála DjangoLink to this heading

Soláthraíonn Django roinnt fóntais chun na riachtanais áirithe a bhaineann le logáil isteach i dtimpeallacht freastalaí gréasáin a láim

LogálaíLink to this heading

Soláthraíonn Django roinnt loggers ionsuite.

DjangoLink to this heading

<naming-loggers-hierarchy>An logálaí tuismitheora do theachtaireachtaí sa django:ref: `ordlathas logálaí ainmnithe `. Ní phostáil Django teachtaireachtaí ag baint úsáide as an ainm seo. Ina áit sin, úsáideann sé ceann de na loggers thíos.

django.requestLink to this heading

Teachtaireachtaí logála a bhaineann le láimhseáil iarratais. Ardaítear 5XX freagra mar theachtaireachtaí ERROR; Ardaítear 4XX freagra mar theachtaireachtaí RABHADH ``. chuirtear iarratais atá logáilte chuig an logaire ``django.security logáilte chuig django.request.

Tá an comhthéacs breise seo a leanas ag teachtaireachtaí chuig an logaire seo:

  • status_code: An cód freagartha HTTP a bhaineann leis an iarratas.

  • request: An réad iarratais a ghinigh an teachtaireacht logála.

django.freastalaLink to this heading

Logáil teachtaireachtaí a bhaineann le láimhseáil iarratais a fhaigheann an freastalaí a ghairm leis an ordú:djadmin: runserver. Logáiltear freagraí HTTP 5XX mar theachtaireachtaí ERROR, logáiltear freagraí 4XX mar theachtaireachtaí RABHADH ``, agus logáiltear gach rud eile mar `INFO.

Tá an comhthéacs breise seo a leanas ag teachtaireachtaí chuig an logaire seo:

  • status_code: An cód freagartha HTTP a bhaineann leis an iarratas.

  • request: An réad iarratais (a:py:class: socket.socket) a ghinigh an teachtaireacht logála.

django.teimpléadLink to this heading

Logáil teachtaireachtaí a bhaineann le rindreáil teimpléid.

  • Logáiltear athróga comhthéacs atá in easnamh mar theachtaireachtaí ``DEBUG`.

django.db.backendsLink to this heading

Teachtaireachtaí a bhaineann le hidirghníomhú an chód leis an mbunachar sonraí Mar shampla, logáiltear gach ráiteas SQL ar leibhéal feidhmchláir a fhorghníomhaítear le hiarratas ag an leibhéal ``DEBUG` chuig an logger seo.

Tá an comhthéacs breise seo a leanas ag teachtaireachtaí chuig an logaire seo:

  • ``fad ``: An t-am a thógtar chun an ráiteas SQL a fhorghníomhú.

  • sql: An ráiteas SQL a cuireadh i bhfeidhm.

  • params: Na paraiméadair a úsáideadh sa ghlao SQL.

  • alias: An alias den bhunachar sonraí a úsáidtear sa ghlao SQL.

Ar chúiseanna feidhmíochta, ní chumasaítear logáil SQL ach nuair a shocraítear Settings.debug go True, beag beann ar an leibhéal logála nó ar an láimhseálaithe atá suiteáilte.

Ní chuimsíonn an logáil seo tionscnamh ar leibhéal creata (m.sh. SET TIMEZONE`). Cas ar logáil ceisteanna i do bhunachar sonraí más mian leat gach ceist bunachar sonraí a fheiceáil.

django.utils.autoreloadLink to this heading

Logáil teachtaireachtaí a bhaineann le hathluchtú cód uathoibríoch le linn freastalaí forbartha Django a chur i bh Gineann an logálaí seo teachtaireacht ``INFO` nuair a bhrath modhnú i gcomhad cód foinse agus féadfaidh sé teachtaireachtaí `RABHADH ``a tháirgeadh le linn cigireachta an chórais chomhaid agus próisis síntiúis imeachta.

django.contrib.authLink to this heading

Gintear teachtaireachtaí logála a bhaineann le:doc: contrib/auth, go háirithe teachtaireachtaí ERROR nuair a chuirtear a:class: ~django.contrib.auth.forms.passwordResetForm isteach go rathúil ach ní féidir an ríomhphost athshocraithe pasfhocal a sheachadadh mar gheall ar eisceacht seolta ríomhphoist.

django.contrib.gisLink to this heading

Logáil teachtaireachtaí a bhaineann le:doc: contrib/gis/index ag pointí éagsúla: le linn luchtú leabharlanna Geospásúla seachtracha (GEOS, GDAL, srl.) agus nuair a thuairisciú earráidí. Cuimsíonn gach taifead logála ``ERROR` an eisceacht ghafa agus na sonraí comhthéacsúla ábhartha.

``django.sheoladh ``Link to this heading

Úsáidtear an logaire seo in:doc: signals, go sonrach laistigh den aic:mod: ~Django.Dispatch.Signal, chun saincheisteanna a thuairisciú agus comhartha á sheoladh chuig glacadóir ceangailte. Cuimsíonn an taifead logála ERROR an eisceacht ghafa mar exc_info` agus cuireann sé an comhthéacs breise seo a leanas leis:

  • ``glacadóir`: Ainm an ghlacadóra.

  • err: An eisceacht a tharla nuair a ghlaoigh ar an nglacadóir.

django.security. *Link to this heading

Gheobhaidh na logóirí slándála teachtaireachtaí ar aon tarlú de:exc: ~django.core.exceptions.SuspiciousOperation agus earráidí eile a bhaineann le slándáil. Tá fo-logaire ann do gach fo-chineál earráide slándála, lena n-áirítear gach SuspiciousOperation. Braitheann leibhéal an imeachta logála ar an áit a láimhseálfar an eisceacht. Déantar an chuid is mó de na himeachtaí a logáil mar rabhadh, agus logáilfear aon Abhrabhachas ``a shroicheann láimhseálaí WSGI mar earráid. Mar shampla, nuair a chuirtear ceannteideal HTTP ``Host san áireamh in iarratas ó chliant nach bhfuil meait:setting: ALLOWED_HOSTS, cuirfidh Django freagra 400 ar ais, agus logálfar teachtaireacht earráide chuig an logger Django.security.disallowedHost.

Sroichfidh na himeachtaí logála seo an logaire django de réir réamhshocraithe, a sheolann imeachtaí earráide chuig riarthóirí nuair a bhíonn debug = false `. Ní logálfar iarratais a bhíonn freagra 400 mar gheall ar AbhraisciousOperation sa logálaí django.request`, ach chuig an logálaí django.security` amháin.

Chun cineál áirithe AspiciousOperation a thostú, is féidir leat an logaire sonrach sin a shárú tar éis an sampla seo:

Code
LOGGING = {
    # ...
    "handlers": {
        "null": {
            "class": "logging.NullHandler",
        },
    },
    "loggers": {
        "django.security.DisallowedHost": {
            "handlers": ["null"],
            "propagate": False,
        },
    },
    # ...
}

Is iad logálaí eile django.security` nach bhfuil bunaithe ar AspiciousOperation:

  • <csrf-rejected-requests>``django.security.csrf``: le haghaidh: `Teipeanna CSRF `.

django.db.backends.schemaLink to this heading

Logálann sé na ceisteanna SQL a fhorghníomhaítear le linn athruithe scéime ar an mbunachar sonraí ag an gcreata:doc: </topics/migrations> imirceach. Tabhair faoi deara nach logálfaidh sé na ceisteanna a fhorghníomhaí:class: ~django.db.migrations.operations.runpython. Tá params` agus sql` ag teachtaireachtaí chuig an logaire seo ina gcomhthéacs breise (ach murab ionann agus django.db.backends, ní fad). Tá an brí céanna ag na luachanna mar a mhínítear in:ref: django-db-logger.

django.contrib.sesionsLink to this heading

Logáil teachtaireachtaí a bhaineann le:doc: `session framework`</topics/http/sessions>.

  • Déantar earráidí neamh-mharfacha a tharlaíonn nuair a úsáidtear an inneall:class: Django.contrib.sessions.backends.cached_db.sessionStore logáilte mar theachtaireachtaí ERROR leis an rianaireacht chomhfhreagrach.

LáimhseálaitheLink to this heading

<python:logging.handlers>Soláthraíonn Django láimhseálaí logála amháin i dteann:mod: `iad siúd a sholáthraíonn an modúl logála Python `.

class AdminEmailHandler(include_html=False, email_backend=None, reporter_class=None)Link to this definition

Seolann an láimhseálaí seo ríomhphost chuig an láithreán: setting: ADMINS do gach teachtaireacht logála a fhaigheann sé.

Má tá tréith iarrata sa taifead logála, cuirfear sonraí iomlána an iarratais san áireamh sa ríomhphost. Áireofar san ábhar ríomhphoist an abairt “IP inmheánach” má tá seoladh IP an chliaint sa socrú: INTERNAL_IPS; mura bhfuil, beidh “IP EXTERNAL” san áireamh ann.

Má tá faisnéis rianaithe cruach sa taifead logála, cuirfear an rian cruach sin san áireamh sa ríomhphost.

Úsáidtear an argóint include_html` de AdminEmailHandler` chun rialú a dhéanamh an bhfuil ceangaltán HTML san áireamh sa ríomhphost rianaithe ina bhfuil ábhar iomlán an leathanaigh ghréasáin dífhabhtaithe a tháirgfeadh dá mbeadh: socrú: DEBUG True. Chun an luach seo a shocrú i do chumraíocht, cuir san áireamh é sa sainmhíniú láimhseálaí do Django.utils.log.adminEmailHandler, mar seo:

Code
"handlers": {
    "mail_admins": {
        "level": "ERROR",
        "class": "django.utils.log.AdminEmailHandler",
        "include_html": True,
    },
}

Bí ar an eolas fao:ref: impleachtaí slándála a bhaineann le logáil `agus an `AdminEmailHand <logging-security-implications>ler` á úsáid agat.

<topic-email-backends>Trí an argóint email_backend de AdminEmailHandler` a shocrú, is féidir an:ref: backend ríomhphost atá á úsáid ag an láimhseálaí a athshealbhú, mar seo:

Code
"handlers": {
    "mail_admins": {
        "level": "ERROR",
        "class": "django.utils.log.AdminEmailHandler",
        "email_backend": "django.core.mail.backends.filebased.EmailBackend",
    },
}

De réir réamhshocraithe, úsáidfear sampla den chúltaca ríomhphoist a shonraítear in:setting: EMAIL_BACKEND.

Ligeann an argóint reporter_class de AdminEmailHandler` fo-aicme django.views.debug.exceptionReporter a sholáthar chun an téacs rianaithe a sheoltar sa chomhlacht ríomhphoist a shaincheapadh. Soláthraíonn tú cosán allmhairithe teaghrán chuig an rang is mian leat a úsáid, mar seo:

Code
"handlers": {
    "mail_admins": {
        "level": "ERROR",
        "class": "django.utils.log.AdminEmailHandler",
        "include_html": True,
        "reporter_class": "somepackage.error_reporter.CustomErrorReporter",
    },
}
send_mail(subject, message, *args, **kwargs)Link to this definition

Seolann ríomhphoist chuig úsáideoirí admin. Chun an t-iompar seo a shaincheapadh, is féidir leat an rang:class: ~django.utils.log.adminEmailHandler a fho-aicmiú agus an modh seo a shárú.

ScagairíLink to this heading

Soláthraíonn Django roinnt scagairí logála i dteannta leo siúd a sholáthraíonn modúl logála Python.

class CallbackFilter(callback)Link to this definition

Glacann an scagaire seo le feidhm aisghlaonna (ba chóir dó glacadh le argóint amháin, an taifead atá le logáil), agus glaonn sé do gach taifead a théann tríd an scagaire. Ní rachaidh láimhseáil an taifead sin ar aghaidh má fhilleann an glaoch ar ais bréagach.

Mar shampla, chun scagadh amach: exc: ~django.http.UnreadablePostError (arna ardú nuair a chuireann úsáideoir uaslódáil ar ceal) ó na ríomhphoist riaracháin, chruthófá feidhm scagaire:

Code
from django.http import UnreadablePostError


def skip_unreadable_post(record):
    if record.exc_info:
        exc_type, exc_value = record.exc_info[:2]
        if isinstance(exc_value, UnreadablePostError):
            return False
    return True

agus ansin cuir é le do chumraíocht logála:

Code
LOGGING = {
    # ...
    "filters": {
        "skip_unreadable_posts": {
            "()": "django.utils.log.CallbackFilter",
            "callback": skip_unreadable_post,
        },
    },
    "handlers": {
        "mail_admins": {
            "level": "ERROR",
            "filters": ["skip_unreadable_posts"],
            "class": "django.utils.log.AdminEmailHandler",
        },
    },
    # ...
}
class RequireDebugFalseLink to this definition

Ní chuirfidh an scagaire seo ar thaifid ach nuair a bhíonn settings.Debug bréagach.

Úsáidtear an scagaire seo mar seo a leanas sa chumraíocht réamhshocraithe:socrú: LOGGING chun a chinntiú nach seolann an:class: adminEmailHandler ríomhphoist earráide chuig riarthóirí ach nuair:socrú: DEBUG False`:

Code
LOGGING = {
    # ...
    "filters": {
        "require_debug_false": {
            "()": "django.utils.log.RequireDebugFalse",
        },
    },
    "handlers": {
        "mail_admins": {
            "level": "ERROR",
            "filters": ["require_debug_false"],
            "class": "django.utils.log.AdminEmailHandler",
        },
    },
    # ...
}
class RequireDebugTrueLink to this definition

Tá an scagaire seo cosúil le:class: RequireDebugFalse, ach amháin nach ndéantar taifid a rith ach nuair:setting: DEBUG True.