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.
Ar dtús, iompórtáil leabharlann logála Python, agus ansin faigh sampla logger le: py:func: logging.getLogger. Cuir ainm ar fáil don modh getLogger () ``chun é a aithint agus na taifid a astaíonn sé. Is é rogha maith ná ``__name__` a úsáid (féach: ref: naming-loggers thíos le haghaidh tuilleadh eolais faoi seo) a sholáthróidh ainm an mhodúil reatha Python mar chonair poncaí:
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")
Nuair a chuirtear an cód seo i bhfeidhm, seolfar a:py:class: ~logging.logRecord ina bhfuil an teachtaireacht sin chuig an logger. Má tá cumraíocht logála réamhshocraithe Django á úsáid agat, beidh an teachtaireacht le feiceáil sa chonsól.
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",
},
},
}
Glacann ranganna éagsúla láimhseálaithe roghanna cumraíochta <logging.handlers>Le haghaidh tuilleadh faisnéise faoi ranganna láimhseálaithe atá ar fáil, féach an:class: ~django.utils.log.adminEmailHandler a sholáthraíonn Django agus na ranganna éagsúla: py:mod: `handler `a sholáthraíonn 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
<logging.LogRecord>De réir réamhshocraithe, tá an chuid teachtaireachta de gach ceann: class: log record `sa aschur logála deiridh. Úsáid formáiditheoir más mian leat sonraí breise a chur san áireamh. Céad ainm agus sainmhínigh do chuid formáidithe - sainmhíníonn an sampla seo formáidithe darb ainm ``verbose` agus simpl:
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.
Sainmhínítear spás ainmneacha sampla logger ag baint úsáid:py:func: ~logging.getLogger. Mar shampla i views.py` de 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.