Conas logáil a chumrú agus a úsáidLink to this heading
Soláthraíonn Django oibrí:ref: `cumraíocht logála réamhshocraithe <default-logging-configuration>`a leathnaítear go héasca.
Déan glao logála bunúsachLink to this heading
Chun teachtaireacht logála a sheoladh ó laistigh de do chód, cuireann tú glao logála isteach ann.
First, import the Python logging library, and then obtain a logger instance
with logging.getLogger(). Provide the getLogger() method with a
name to identify it and the records it emits. A good option is to use
__name__ (see Úsáid spás ainmneacha logger below for more on this) which will
provide the name of the current Python module as a dotted path:
import logging
logger = logging.getLogger(__name__)
Is coinbhinsiún maith é an dearbhú seo a dhéanamh ar leibhéal an mhodúil.
Agus ansin i bhfeidhm, mar shampla i radharc, seol taifead chuig an logger:
def some_view(request):
...
if some_risky_state:
logger.warning("Platform is running at risk")
When this code is executed, a LogRecord containing that
message will be sent to the logger. If you're using Django's default logging
configuration, the message will appear in the console.
Tá an leibhéal RABHADH ``a úsáidtear sa sampla thuas ar cheann de roinnt leibhéil déine logála `: `DEBUG, INFO`, RABHADH`, ERROR`<topic-logging-parts-loggers>, CRITICAL`. Mar sin, d'fhéadfadh sampla eile a bheith:
logger.critical("Payment system is not responding")
Saincheapadh cumraíocht logálaLink to this heading
Cé go n-oibríonn cumraíocht logála Django as an mbosca, is féidir leat rialú go díreach conas a sheoltar do logaí chuig cinn scríbe éagsúla - chun comhaid, seirbhísí seachtracha, ríomhphost agus mar sin de - a logáil le roinnt cumraíochta breise.
Is féidir leat a chumrú:
mapáil logálaí, chun a chinneadh cé na taifid a sheoltar chuig na láimhseálaithe
láimhseálaithe, chun a chinneadh cad a dhéanann siad leis na taifid a fhaigheann siad
scagairí, chun smacht bhreise a sholáthar ar aistriú taifid, agus fiú taifid a mhodhnú i bhfeidhm
formáidithe, chun athró:class: ~Logging.logRecord rudaí a thiontú go sreang nó foirm eile le tomhaltas ag daoine nó córas eile
Tá bealaí éagsúla ann chun logáil a chumrú. I Django, úsáidtear an socrú: setting: LOGGING is coitianta. <default-logging-definition>Úsáideann an socrú an fhormáid: ref: DictConfig <logging-config-dictschema>, agus leathnaíonn sé an:ref: cumraíocht logála réamhshocraithe.
Féach: ref: configuring-loging le haghaidh míniú ar an gcaoi a ndéantar do shocruithe saincheaptha a chumasc le réamhshocruithe Django.
Féach na:mod: Doiciméadú logála Python <python:logging.config>`le haghaidh sonraí faoi bhealaí eile chun logáil a chumrú. Ar mhaithe le simplíocht, ní mheasfaidh an doiciméadú seo cumraíocht ach tríd an socrú ``LOGGING.
Cumraíocht logála bunúsachLink to this heading
Agus logáil á chumrú agat, bíonn sé ciallmhar
Cruthaigh foclóir LOGGINGLink to this heading
I do settings.py`:
LOGGING = {
"version": 1, # the dictConfig format version
"disable_existing_loggers": False, # retain the default loggers
}
Tá sé ciallmhar beagnach i gcónaí an chumraíocht logála réamhshocraithe a choinneáil agus a leathnú trí “disable_existing_loggers” a shocrú go False.
Cumraigh láimhseálaíLink to this heading
Cumraíonn an sampla seo láimhseálaí aonair darb ainm file, a úsáideann Python's:class: ~logging.fileHandler chun logaí de leibhéal DEBUG` agus níos airde chuig an gcomhad ``general.log (ag fréamh an tionscadail) a shábháil:
LOGGING = {
# ...
"handlers": {
"file": {
"class": "logging.FileHandler",
"filename": "general.log",
},
},
}
Different handler classes take different configuration options. For more
information on available handler classes, see the
AdminEmailHandler provided by Django and the various
handler classes provided by Python.
Is féidir leibhéil logála a shocrú ar na láimhseálaithe freisin (de réir réamhshocraithe, glacann siad le teachtaireachtaí loga de gach leibhéal). Ag baint úsáide as an sampla thuas, ag cur leis:
{
"class": "logging.FileHandler",
"filename": "general.log",
"level": "DEBUG",
}
sainmhíníodh cumraíocht láimhseálaí nach nglacann ach taifid ar leibhéal ``DEBUG` agus níos airde.
Cumraigh mapáil loggerLink to this heading
Chun taifid a sheoladh chuig an láimhseálaí seo, cumraigh mapáil logger chun é a úsáid mar shampla:
LOGGING = {
# ...
"loggers": {
"": {
"level": "DEBUG",
"handlers": ["file"],
},
},
}
Cinneann ainm na mapála cé na taifid logála a phróiseálfaidh sé. Tá an chumraíocht seo ("`) gan ainmne. Ciallaíonn sé sin go ndéanfaidh sé taifid a phróiseáil ó* lógairí uach* (féach:ref: naming-loggers thíos maidir le conas an t-ainm mapála a úsáid chun na logairí a phróiseálfaidh sé taifid a chinneadh).
Cuirfidh sé teachtaireachtaí de leibhéil ``DEBUG` agus níos airde ar aghaidh chuig an láimhseálaí darb ainm ``comhad ``.
Tabhair faoi deara gur féidir le logálaí teachtaireachtaí a chur ar aghaidh chuig láimhseálaithe iolracha, mar sin tá an gaol idir lógairí agus láimhseálaithe go leor.
Má fhorghníomhaíonn tú:
logger.debug("Attempting to connect to API")
i do chód, gheobhaidh tú an teachtaireacht sin sa chomhad general.log i bhfréamh an tionscadail.
Cumraigh formáiditheoirLink to this heading
By default, the final log output contains the message part of each
LogRecord object. Use a formatter if you want to include
additional data. First name and define your formatters - this example defines
formatters named verbose and simple:
LOGGING = {
# ...
"formatters": {
"verbose": {
"format": "{name} {levelname} {asctime} {module} {process:d} {thread:d} {message}",
"style": "{",
},
"simple": {
"format": "{levelname} {message}",
"style": "{",
},
},
}
Ligeann an eochairfhocal style duit { a shonrú for:meth: str.format nó $ formáidiú: class: `String.template; is é $` an réamhshocraithe.
Féach: ref: logrecord-atritributes do thréithe: class: ~logging.logrecord is féidir leat a chur san áireamh.
Chun formáiditheoir a chur i bhfeidhm ar láimhseálaí, cuir iontráil ``formáiditheoir ``le foclóir an láimhseálaí ag tagairt don fhormáiditheoir de réir ainm, mar shampla:
"handlers": {
"file": {
"class": "logging.FileHandler",
"filename": "general.log",
"formatter": "verbose",
},
}
Úsáid spás ainmneacha loggerLink to this heading
Gabhann an chumraíocht logála gan ainm ```logaí ó aon fheidhmchlár Python. Ní ghlacfaidh cumraíocht logála ainmnithe logaí ach ó logálaithe le hainmneacha meaitseála.
The namespace of a logger instance is defined using
getLogger(). For example in views.py of my_app:
logger = logging.getLogger(__name__)
cruthóidh sé logálaí sa spás ainmneacha my_app.views. Ligeann __name__ duit teachtaireachtaí logála a eagrú de réir a dtionscnaimh laistigh d'iarratais do thionscadail go huathoibríoch. Cinntíonn sé freisin nach mbeidh imbhuailtí ainmneacha agat.
Gabhfaidh mapáil logaire darb ainm my_app.views taifid ón logger seo:
LOGGING = {
# ...
"loggers": {
"my_app.views": {...},
},
}
Beidh mapáil logálaí darb ainm my_app` níos ceadaithe, ag gabháil taifid ó loggers áit ar bith laistigh den spás ainmneacha my_app (lena n-áirítear my_app.views, my_app.utils`, agus mar sin de):
LOGGING = {
# ...
"loggers": {
"my_app": {...},
},
}
Is féidir leat spás ainmneacha logger a shainiú go sainráite freisin:
logger = logging.getLogger("project.payment")
agus mharpálacha logaire a chur ar bun dá réir.
Ag baint úsáide as ordlathais logger agus iomadúLink to this heading
Is é ainmniú logger* ordlathach*. Is é my_app` tuismitheoir my_app.views, arb é tuismitheoir my_app.views.private. Mura sonraítear a mhalairt, iomadóidh mapáil logger na taifid a phróiseálann siad dá dtuismitheoirí - déanfar taifead ó logálaí sa spás ainmneacha my_app.views.private a láimhseáil le mapáil do my_app agus my_app.views` araon.
Chun an t-iompar seo a bhainistiú, socraigh an eochair iomadaithe ar na mapálacha a shainmhíníonn tú:
LOGGING = {
# ...
"loggers": {
"my_app": {
# ...
},
"my_app.views": {
# ...
},
"my_app.views.private": {
# ...
"propagate": False,
},
},
}
Tá iomada réamhshocraithe go True. Sa sampla seo, ní láimhseálfaidh an tuismitheoir na logaí ó my_app.views.private`, ach déanfaidh logaí ó my_app.views`.
Cumraigh logáil sofhreagrachLink to this heading
Tá logáil is úsáideach nuair a bhíonn an oiread faisnéise agus is féidir ann, ach ní faisnéis nach dteastaíonn uait - agus braitheann an méid a theastaíonn uait ar an méid atá á dhéanamh agat. Nuair a bhíonn tú ag dífhabhtú, teastaíonn leibhéal faisnéise uait a bheadh iomarcach agus neamhchabhrach dá mbeadh ort déileáil leis i dtáirgeadh.
Is féidir leat logáil a chumrú chun an leibhéal sonraí a theastaíonn uait a sholáthar duit, nuair is gá duit é. Seachas an chumraíocht a athrú de láimh chun é seo a bhaint amach, is é bealach níos fearr ná cumraíocht a chur i bhfeidhm go huathoibríoch de réir an chomhshaoil.
Mar shampla, d'fhéadfá athróg comhshaoil DJANGO_LOG_LEVEL a shocrú go cuí i do thimpeallachtaí forbartha agus stáitse, agus úsáid a bhaint as i mapáil logaire mar sin:
"level": os.getenv("DJANGO_LOG_LEVEL", "WARNING")
- ionas nach gcuirfidh an chumraíocht seo ach taifid déine `RABHADH `RABHADH ``agus os cionn chuig a láimhseálaí mura sonraíonn an timpeallacht leibhéal logála níos ísle.
Is féidir roghanna eile sa chumraíocht (mar shampla an rogha láimhseálaithe leibhéil ``nó `formáiditheoir) a bhainistiú ar an gcaoi chéanna.