logging --- Python çšã®ãã°èšé²ææ®µÂ¶
ãœãŒã¹ã³ãŒã: Lib/logging/__init__.py
ãã®ã¢ãžã¥ãŒã«ã¯ãã¢ããªã±ãŒã·ã§ã³ãã©ã€ãã©ãªã®ããã®æè»ãªãšã©ãŒãã°èšé² (logging) ã·ã¹ãã ãå®è£ ããããã®é¢æ°ãã¯ã©ã¹ãå®çŸ©ããŠããŸãã
æšæºã©ã€ãã©ãªã¢ãžã¥ãŒã«ãšããŠãã°èšé² API ãæäŸãããå©ç¹ã¯ããã¹ãŠã® Python ã¢ãžã¥ãŒã«ããã°èšé²ã«åå ã§ããããšã§ãããããã«ãã£ãŠããªããæžãã¢ããªã±ãŒã·ã§ã³ã®ãã°ã«ãµãŒãããŒãã£ãŒã®ã¢ãžã¥ãŒã«ãåºåããã¡ãã»ãŒãžãå«ãŸããããšãã§ããŸãã
以äžã¯æ £çšçãªäœ¿ãæ¹ã®åçŽãªäŸã§ã:
# myapp.py
import logging
import mylib
logger = logging.getLogger(__name__)
def main():
logging.basicConfig(filename='myapp.log', level=logging.INFO)
logger.info('Started')
mylib.do_something()
logger.info('Finished')
if __name__ == '__main__':
main()
# mylib.py
import logging
logger = logging.getLogger(__name__)
def do_something():
logger.info('Doing something')
myapp.py ãå®è¡ããã°ãmyapp.log ã§ãã°ã確èªã§ããŸã:
INFO:__main__:Started
INFO:mylib:Doing something
INFO:__main__:Finished
ãã®æ
£çšçãªäœ¿ãæ¹ã«ãããéèŠãªç¹è²ã¯ã倧éšåã®ã³ãŒã㯠getLogger(__name__) ã§åã«ã¢ãžã¥ãŒã«ã¬ãã«ã®ãã¬ãŒãäœãã ãã§ããã®ãã¬ãŒãå¿
èŠãªãã®ã³ã°ã«äœ¿ãããšããããšã§ããããã¯ç°¡æœã§ãããšåæã«ãäžäœã®ã³ãŒãã«ãããŠãå¿
èŠã«å¿ããŠãã现ãããªå¶åŸ¡ãå¯èœã«ããŠããŸããã¢ãžã¥ãŒã«ã¬ãã«ã®ãã¬ãŒã«å¯Ÿãããã°ã¡ãã»ãŒãžã¯ãæçµçã«ã«ãŒããã¬ãŒãšããŠç¥ãããæäžäœã®ãã¬ãŒã«éãããŸã§é 次転éãããŸãããã®ã³ã°ã«å¯Ÿãããã®ãããªã¢ãããŒãã¯ãéå±€çãã®ã³ã°ãšããŠç¥ãããŠããŸãã
ãã®ã³ã°ãæçšãªãã®ãšããããã«ã¯ãçšéã«å¿ããŠæ§æããå¿
èŠããããŸã: ãã°ã¬ãã«ã®èšå®ãåãã¬ãŒã®åºåå
ãããæœåšçã«ã¯ç¹å®ã®ã¢ãžã¥ãŒã«ã«å¯Ÿããæ¯ãèãã®å€æŽãªã©ãããã°ãã°ã³ãã³ãã©ã€ã³åŒæ°ãã¢ããªã±ãŒã·ã§ã³ã®æ§æã®äžéšãšããŠãäžèšã®äŸãå«ããŠãã»ãšãã©ã®å Žåã§ã¯ã«ãŒããã¬ãŒã®ã¿ãæ§æããã ãã§ååã§ãããªããªãã¢ãžã¥ãŒã«ã¬ãã«ã®å
šãŠã®äžäœã®ãã¬ãŒã¯ãå
šãŠã®ã¡ãã»ãŒãžãæçµçã«ã«ãŒããã¬ãŒã®ãã³ãã©ã«è»¢éããããã§ãã basicConfig() ã¯ãå€ãã®ãŠãŒã¹ã±ãŒã¹ãäžæã«æ±ãããšã®ã§ãã簡䟿ãªã«ãŒããã¬ãŒã®æ§ææ¹æ³ãæäŸããŸãã
ãã®ã¢ãžã¥ãŒã«ã¯ãå€ãã®æ©èœæ§ãšæè»æ§ãæäŸããŸãããã®ã³ã°ã«æ £ããŠããªããªããäœ¿ãæ¹ãçè§£ããæè¯ã®æ¹æ³ã¯ãã¥ãŒããªã¢ã«ãèªãããšã§ã (å³äžã®ãªã³ã¯ãåç §ããŠãã ãã)ã
ã¢ãžã¥ãŒã«ã§å®çŸ©ãããŠããåºæ¬çãªã¯ã©ã¹ãšããã®å±æ§ããã³ã¡ãœããã以äžã«åæããŸãã
ãã¬ãŒã¯ãã¢ããªã±ãŒã·ã§ã³ã³ãŒããçŽæ¥äœ¿ãã€ã³ã¿ãŒãã§ãŒã¹ãå ¬éããŸãã
ãã³ãã©ã¯ã(ãã¬ãŒã«ãã£ãŠçæããã) ãã°èšé²ãé©åãªéä¿¡å ã«éããŸãã
ãã£ã«ã¿ã¯ãã©ã®ãã°èšé²ãåºåããããæ±ºå®ããããã现ããæ©èœãæäŸããŸãã
ãã©ãŒããã¿ã¯ããã°èšé²ãæçµçã«åºåãããã¬ã€ã¢ãŠããæå®ããŸãã
ãã¬ãŒãªããžã§ã¯ã¶
ãã¬ãŒã«ã¯ä»¥äžã®ãããªå±æ§ãšã¡ãœããããããŸãã
ãã¬ãŒãçŽæ¥ã€ã³ã¹ã¿ã³ã¹åããããšã¯ 絶察㫠ããŠã¯ãªãããåžžã«ã¢ãžã¥ãŒã«é¢æ° logging.getLogger(name) ãä»ããŠã€ã³ã¹ã¿ã³ã¹åããããšã«æ³šæããŠãã ããã
åã name ã§ getLogger() ãè€æ°ååŒã³åºããšãåžžã«åããã¬ãŒã»ãªããžã§ã¯ããžã®åç
§ãè¿ãããŸãã
name ã¯ãæœåšçã« foo.bar.baz ã®ãããªããªãªãã§åºåãããéå±€çãªå€ã§ã (ãã ããããšãã° foo ã®ãããªåçŽãªå€ãå¯èœã§ã)ãéå±€æ§é ã®äžäœã«ãããã¬ãŒã¯ãäžäœã®ãã¬ãŒã®åã«ãªããŸããããšãã° foo ãšããååã®ãã¬ãŒã«å¯ŸããŠã foo.barã foo.bar.bazã foo.bam ãšããååã®ãã¬ãŒã¯å
šãŠ foo ã®åå«ã§ããããã«ãå
šãŠã®ãã¬ãŒã¯ã«ãŒããã¬ãŒã®åå«ã§ãããã¬ãŒåã®éå±€æ§é 㯠Python ããã±ãŒãžã®éå±€æ§é ã«é¡äŒŒããŠããŸãããŸããæšå¥šãããæ§ç¯æ¹æ³ã§ãã logging.getLogger(__name__) ã䜿ã£ãŠã¢ãžã¥ãŒã«åäœã§ãã¬ãŒãæ§ç¯ããã°ãããã±ãŒãžã®éå±€æ§é ãšãã¬ãŒã®éå±€æ§é ã¯åäžã«ãªããŸãããªããªããã¢ãžã¥ãŒã«ã®äžã§ã __name__ 㯠Python ããã±ãŒãžã®åå空éã«ãããã¢ãžã¥ãŒã«åã ããã§ãã
- class logging.Logger¶
- name¶
ãã¬ãŒã®ååã§ãããŸãããã¬ãŒãååŸããããã«
getLogger()ãåŒã³åºããšãã«æž¡ãããå€ã§ããæ³šé
ãã®å±æ§ã¯èªã¿åºãå°çšãšããŠæ±ãããã¹ãã§ãã
- level¶
setLevel()ã¡ãœããã§èšå®ãããããã®ãã¬ãŒã®ãããå€ã§ããæ³šé
ãã®å±æ§ãçŽæ¥èšå®ããªãã§ãã ãã -
setLevel()ã¯æž¡ãããã¬ãã«ããã§ãã¯ããæ©èœãæã£ãŠããŸãã®ã§ãåžžã«ãã®ã¡ãœããã䜿ãããã«ããŠãã ããã
- parent¶
ãã®ãã¬ãŒã®èŠªã«ããããã¬ãŒã§ããåå空éã®éå±€æ§é ã§äžäœã«ããããã¬ãŒã®ã€ã³ã¹ã¿ã³ã¹åã«ããã芪ãã¬ãŒã¯å€ããå¯èœæ§ããããŸãã
泚é
ãã®å€ã¯èªã¿åºãå°çšãšããŠåãæ±ãããã¹ãã§ãã
- propagate¶
ãã®å±æ§ãçãšè©äŸ¡ãããå Žåããã®ãã¬ãŒã«èšé²ãããã€ãã³ãã¯ããã®ãã¬ãŒã«åãä»ããããå šãŠã®ãã³ãã©ã«å ããäžäœ (ç¥å ) ãã¬ãŒã®ãã³ãã©ã«ãæž¡ãããŸãã ã¡ãã»ãŒãžã¯ãç¥å ãã¬ãŒã®ãã³ãã©ã«çŽæ¥æž¡ãããŸã - ä»åé¡ã«ããŠããç¥å ãã¬ãŒã®ã¬ãã«ããã£ã«ã¿ããã©ã¡ããèæ ®ãããŸããã
ãã®å€ã®è©äŸ¡çµæãåœã«ãªãå Žåããã®ã³ã°ã¡ãã»ãŒãžã¯ç¥å ãã¬ãŒã®ãã³ãã©ã«æž¡ãããŸããã
å ·äœçãªäŸã§èª¬æããŸã:
A.B.Cãšããååã®ãã¬ãŒã® propagate 屿§ãçãšè©äŸ¡ãããå Žåãlogging.getLogger('A.B.C').error(...)ã®ãããªã¡ãœããã®åŒã³åºããéããŠA.B.Cã«èšé²ãããå šãŠã®ã€ãã³ãã¯ã [ãã°ã¬ãã«ãšãã£ã«ã¿ã®èšå®ãæºãããå Žåã«éã] æåã«A.B.Cã«æ¥ç¶ããããã³ãã©ã«æž¡ããããã®åŸA.B,Aãšããååã®ãã¬ãŒããããŠã«ãŒããã¬ãŒãšããé çªã§åãã¬ãŒã«æ¥ç¶ããããã³ãã©ã«æž¡ãããŸãããã®é£éæ§é ã«ãããŠA.B.C,A.B,Aã®ããããã®propagate屿§ãåœã«èšå®ãããå Žåããã®ãã¬ãŒãã€ãã³ããåŠçããæåŸã®ãã¬ãŒãšãªãããã®æç¹ã§ã€ãã³ãã®äŒæã¯æ¢ãŸããŸããã³ã³ã¹ãã©ã¯ã¿ã¯ãã®å±æ§ã
Trueã«èšå®ããŸããæ³šé
ãã³ãã©ãããããã¬ãŒ ãš ãã®ç¥å ã®ãã¬ãŒã«æ¥ç¶ããå Žåãåäžã¬ã³ãŒããè€æ°åçºè¡ãããå ŽåããããŸããäžè¬çã«ããã³ãã©ãè€æ°ã®ãã¬ãŒã«æ¥ç¶ããå¿ èŠã¯ãããŸãããpropagate èšå®ã
Trueã®ãŸãŸã«ãªã£ãŠããã°ããã¬ãŒã®éå±€ã«ãããŠæäžäœã«ããé©åãªãã¬ãŒã«ãã³ãã©ãæ¥ç¶ããã ãã§ããã®ãã³ãã©ã¯å šãŠã®åå«ãã¬ãŒãèšé²ããå šãŠã®ã€ãã³ãã確èªããããšãã§ããŸããäžè¬çãªã·ããªãªã§ã¯ããã³ãã©ãã«ãŒããã¬ãŒã«å¯ŸããŠã®ã¿æ¥ç¶ããæ®ã㯠propagate ã«ãã¹ãŠå§ããŸãã
- handlers¶
ãã®ãã¬ãŒã€ã³ã¹ã¿ã³ã¹ã«çŽæ¥æ¥ç¶ãããŠãããã³ãã©ã®ãªã¹ãã§ãã
泚é
ãã®å±æ§ã¯èªã¿åºãå°çšãšããŠåãæ±ãããã¹ãã§ã; éåžžãã®å±æ§ã¯
addHandler()ãšremoveHandler()ã®2ã€ã®ã¡ãœãããä»ããŠå€æŽãããŸãããããã®ã¡ãœããã¯ã¹ã¬ããã»ãŒããªåŠçãä¿èšŒããããã«ããã¯ã掻çšããŸãã
- disabled¶
ãã®å±æ§ã¯ããããªãã€ãã³ãã®åŠçãäœåããªãããã«ããŸããã€ãã·ã£ã©ã€ã¶ã¯ãã®å±æ§ã«
Falseãèšå®ããŸãããŸãããã®å±æ§ã¯ãã®ã³ã°ãèšå®ããã³ãŒãã«ãã£ãŠã®ã¿å€æŽãããŸããæ³šé
ãã®å±æ§ã¯èªã¿åºãå°çšãšããŠæ±ãããã¹ãã§ãã
- setLevel(level)¶
ãã®ãã¬ãŒã®éŸå€ã level ã«èšå®ããŸãã level ãããæ·±å»ã§ãªããã°ã¡ãã»ãŒãžã¯ç¡èŠãããŸã; æ·±å»ãã level 以äžã®ãã°ã¡ãã»ãŒãžã¯ããã³ãã©ã®ã¬ãã«ã level ããäžã«èšå®ãããŠããªãéãããã®ãã¬ãŒã«åãä»ããããŠãããã³ãã©ã«ãã£ãŠæããããŸãã
ãã¬ãŒãçæãããéãã¬ãã«ã¯
NOTSET(ããã«ãããã¹ãŠã®ã¡ãã»ãŒãžã«ã€ããŠããã¬ãŒãã«ãŒããã¬ãŒã§ããã°åŠçããããããã§ãªããŠãã¬ãŒãéã«ãŒããã¬ãŒã®å Žåã«ã¯èŠªãã¬ãŒã«å§è²ããã) ã«èšå®ãããŸãã ã«ãŒããã¬ãŒã¯WARNINGã¬ãã«ã§çæãããããšã«æ³šæããŠãã ãããã芪ãã¬ãŒã«å§è²ããšããçšèªã®æå³ã¯ããããã¬ãŒã®ã¬ãã«ã NOTSET ãªãã°ãç¥å ãã¬ãŒã®ç³»åã®äžã NOTSET 以å€ã®ã¬ãã«ã®ç¥å ãèŠã€ãããã«ãŒãã«å°éãããŸã§èŸ¿ã£ãŠããããšããããšã§ãã
ãã NOTSET 以å€ã®ã¬ãã«ã®ç¥å ãèŠã€ãã£ããªãããã®ç¥å ã®ã¬ãã«ãæ¢çŽ¢ãéå§ãããã¬ãŒã®å®å¹ã¬ãã«ãšããŠæ±ããããã°ã€ãã³ããã©ã®ããã«åŠçãããããæ±ºããã®ã«äœ¿ãããŸãã
ã«ãŒãã«å°éããå Žåãã«ãŒãã®ã¬ãã«ã NOTSET ãªãã°ãã¹ãŠã®ã¡ãã»ãŒãžã¯åŠçãããŸããããã§ãªããã°ã«ãŒãã®ã¬ãã«ãå®å¹ã¬ãã«ãšããŠäœ¿ãããŸãã
ã¬ãã«ã®äžèЧã«ã€ããŠã¯ ãã®ã³ã°ã¬ãã« ãåç §ããŠãã ããã
ããŒãžã§ã³ 3.2 ã§å€æŽ: level ãã©ã¡ãŒã¿ã¯ã
INFOã®ãããªæŽæ°å®æ°ã®ä»£ããã« 'INFO' ã®ãããªã¬ãã«ã®æåå衚çŸãåãä»ããããã«ãªããŸããããã ããã¬ãã«ã¯å éšã§æŽæ°ãšããŠä¿åãããŸãããgetEffectiveLevel()ãisEnabledFor()ãšãã£ãã¡ãœããã¯ãæŽæ°ãè¿ãããŸãæž¡ããããã®ãšæåŸ ããŸãã
- isEnabledFor(level)¶
æ·±å»åºŠã lvl ã®ã¡ãã»ãŒãžãããã®ãã¬ãŒã§åŠçãããããšã«ãªã£ãŠãããã©ããã瀺ããŸãããã®ã¡ãœããã¯ãŸãã
logging.disable(level)ã§èšå®ãããã¢ãžã¥ãŒã«ã¬ãã«ã®æ·±å»åºŠã¬ãã«ã調ã¹ã次ã«ãã¬ãŒã®å®å¹ã¬ãã«ãgetEffectiveLevel()ã§èª¿ã¹ãŸãã
- getEffectiveLevel()¶
ãã®ãã¬ãŒã®å®å¹ã¬ãã«ã瀺ããŸãã
NOTSET以å€ã®å€ãsetLevel()ã§èšå®ãããŠããå Žåããã®å€ãè¿ãããŸããããã§ãªãå ŽåãNOTSET以å€ã®å€ãèŠã€ãããŸã§ãã¬ãŒã®éå±€ãã«ãŒããã¬ãŒã®æ¹åã«è¿œè·¡ããŸããèŠã€ãã£ãå Žåããã®å€ãè¿ãããŸããè¿ãããå€ã¯æŽæ°ã§ãå žåçã«ã¯logging.DEBUG,logging.INFOçã®ãã¡äžã€ã§ãã
- getChild(suffix)¶
ãã®ãã¬ãŒã®åã§ãããã¬ãŒããæ¥é èŸã«ãã£ãŠæ±ºå®ããè¿ããŸããåŸã£ãŠã
logging.getLogger('abc').getChild('def.ghi')ã¯ãlogging.getLogger('abc.def.ghi')ã«ãã£ãŠè¿ãããã®ãšåããã¬ãŒãè¿ãããšã«ãªããŸããããã¯ç°¡äŸ¿ãªã¡ãœããã§ã芪ãã¬ãŒããªãã©ã«ã§ãªã__name__ãªã©ã䜿ã£ãŠåä»ããããŠãããšãã«äŸ¿å©ã§ããAdded in version 3.2.
- getChildren()¶
ãã®ãã¬ãŒã®çŽæ¥ã®åã§ãããã¬ãŒã®éåãè¿ããŸãããããã£ãŠãããšãã°
logging.getLogger().getChildren()ã¯fooãbarãšãã£ãååã®ãã¬ãŒãå«ãéåãè¿ããããããŸããããfoo.barãšããååã®ãã¬ãŒã¯æ»ãå€ã®éåã«ã¯å«ãŸããŸãããåæ§ã«ãlogging.getLogger('foo').getChildren()ã¯foo.barãšããååã®ãã¬ãŒãå«ãéåãè¿ããããããŸããããfoo.bar.bazã®ãããªååã®ãã¬ãŒã¯æ»ãå€ã®éåã«ã¯å«ãŸããŸãããAdded in version 3.12.
- debug(msg, *args, **kwargs)¶
ã¬ãã«
DEBUGã®ã¡ãã»ãŒãžããã®ãã¬ãŒã§èšé²ããŸãã msg ã¯ã¡ãã»ãŒãžã®æžåŒæååã§ã args 㯠msg ã«æååæžåŒåæŒç®åã䜿ã£ãŠåã蟌ãããã®åŒæ°ã§ãã (ããã¯ãæžåŒåæååã®äžã§ããŒã¯ãŒãã䜿ããåŒæ°ãšããŠåäžã®èŸæžãæž¡ãããšãã§ããããšããããšãæå³ããŸãã) args ãæäŸãããªãå Žå㯠msg ã®%ãã©ãŒãããã¯å®è¡ãããŸãããkwargs ã®ãã¡ã exc_info, stack_info, stacklevel, extra ãšãã4ã€ã®ããŒã¯ãŒãåŒæ°ã®äžèº«ã調ã¹ãŸãã
exc_info ã¯ããã®å€ã®è©äŸ¡å€ã false ã§ãªãå ŽåãäŸå€æ å ±ããã®ã³ã°ã¡ãã»ãŒãžã«è¿œå ãããŸããããäŸå€æ å ±ãããããã¿ãã«(
sys.exc_info()颿°ã«ãã£ãŠæ»ããããã©ãŒãããã«ãããŠ)ããŸãã¯ãäŸå€æ å ±ãããããã€ã³ã¹ã¿ã³ã¹ãäžããããŠããã°ãããã䜿çšãããããšã«ãªããŸãããã以å€ã®å Žåã«ã¯ãsys.exc_info()ãåŒã³åºããŠäŸå€æ å ±ãååŸããŸãã2ã€ç®ã®çç¥å¯èœãªããŒã¯ãŒãåŒæ°ã¯ stack_info ã§ãããã©ã«ãã¯
Falseã§ããçã®å Žåãå®éã®ãã®ã³ã°åŒã³åºããå«ãã¹ã¿ãã¯æ å ±ããã®ã³ã°ã¡ãã»ãŒãžã«è¿œå ãããŸãããã㯠exc_info æå®ã«ãã£ãŠè¡šç€ºãããã¹ã¿ãã¯æ å ±ãšåããã®ã§ã¯ãªãããšã«æ³šæããŠãã ãã: åè ã¯ã«ã¬ã³ãã¹ã¬ããå ã§ã®ãäžçªäžãããã®ã³ã°åŒã³åºããŸã§ã®ã¹ã¿ãã¯ãã¬ãŒã ã§ãããåŸè ã¯äŸå€ã«åŒå¿ããŠãäŸå€ãã³ãã©ãèŠã€ãããšãããŸã§å·»ãæ»ãããã¹ã¿ãã¯ãã¬ãŒã ã®æ å ±ã§ããexc_info ãšã¯ç¬ç«ã« stack_info ãæå®ããããšãã§ããŸã (äŸãã°ãäŸå€ãäžããããªãã£ãå Žåã§ããã³ãŒãäžã®ããå°ç¹ã«ã©ã®ããã«å°çããããåã«ç€ºãããã«)ãã¹ã¿ãã¯ãã¬ãŒã ã¯ã次ã®ãããªããããŒè¡ã«ç¶ããŠè¡šç€ºãããŸã:
Stack (most recent call last):
ããã¯ãäŸå€ãã¬ãŒã ã衚瀺ããå Žåã«äœ¿çšããã
Traceback (most recent call last):ãæš¡å£ããŸãã3çªç®ã®ãªãã·ã§ã³ããŒã¯ãŒãåŒæ°ã¯ stacklevel ã§ãããã©ã«ãã¯
1ã§ããããããã1ããã倧ããå Žåã¯ãLogRecordå ã§è¡çªå·ãšé¢æ°åãç®åºããæã«ãæå®ãããã¹ã¿ãã¯ãã¬ãŒã ã®æ°ãã¹ãããããŸããããã¯ãã°ãã«ããŒå éšã§äœ¿ãããå Žåã颿°åããã¡ã€ã«åãè¡çªå·ã¯ãã®ãã«ããŒã®æ å ±ã§ã¯ãªãããã®ãã«ããŒãåŒã³åºããåŒã³åºãå ã®ãã®ã«ãªããŸãããã®ãã©ã¡ãŒã¿ã®ååã¯warningsã¢ãžã¥ãŒã«ãšåããã®ã«ãªããŸãã4çªç®ã®ããŒã¯ãŒãåŒæ°ã¯ extra ã§ããã®ã³ã°ã€ãã³ãã®éã«äœããã
LogRecordã®__dict__屿§ã«ããŠãŒã¶ãŒå®çŸ©ã®å±æ§ã远å ããããã®èŸæžãæž¡ãã®ã«äœ¿ãããšãã§ããŸããããã远å ã®å±æ§ã¯ã奜ããªããã«äœ¿ãããšãã§ããŸããããšãã°ããããããã°ã¡ãã»ãŒãžã«åã蟌ãããšãã§ããŸãã䜿çšäŸ:FORMAT = '%(asctime)s %(clientip)-15s %(user)-8s %(message)s' logging.basicConfig(format=FORMAT) d = {'clientip': '192.168.0.1', 'user': 'fbloggs'} logger = logging.getLogger('tcpserver') logger.warning('Protocol problem: %s', 'connection reset', extra=d)
ããã¯ä»¥äžã®ãããªåºåãè¡ããŸã
2006-02-08 22:20:02,165 192.168.0.1 fbloggs Protocol problem: connection reset
extra ã«æž¡ãããèŸæžã®ããŒã¯ãã®ã³ã°ã·ã¹ãã ã§äœ¿ãããŠãããã®ãšè¡çªããŠã¯ãããŸããã (ãã®ã³ã°ã·ã¹ãã ã䜿ãããŒã®è©³çްã«ã€ããŠã¯ LogRecord 屿§ ã®ç¯ãåç §ããŠãã ããã)
ãããã®å±æ§ããã°ã¡ãã»ãŒãžã«äœ¿ãããšã«ãããªããå°ã泚æãå¿ èŠã§ããäžã®äŸã§ã¯ã 'clientip' ãš 'user' ã
LogRecordã®å±æ§èŸæžã«å«ãŸããŠããããšãæåŸ ããæžåŒæååã§Formatterãã»ããã¢ãããããŠããŸããããããããæ¬ ããŠãããšãæžåŒåäŸå€ãçºçããŠããŸãããã¡ãã»ãŒãžã¯ãã°ã«æ®ããŸããããããã£ãŠãã®å Žåãåžžã«ãããã®ããŒãå«ã extra èŸæžãæž¡ãå¿ èŠããããŸãããã®ãããªããšã¯ç ©ããããããããŸãããããã®æ©èœã¯éå®ãããå Žé¢ã§äœ¿ãããããã«æå³ããŠãããã®ãªã®ã§ããããšãã°åãã³ãŒããããã€ãã®ã³ã³ããã¹ãã§å®è¡ããããã«ãã¹ã¬ããã®ãµãŒãã§ãèå³ã®ããæ¡ä»¶ãçŸããã®ããã®ã³ã³ããã¹ãã«äŸåããŠãã (äžã®äŸã§èšãã°ããªã¢ãŒãã®ã¯ã©ã€ã¢ã³ã IP ã¢ãã¬ã¹ãèªèšŒããããŠãŒã¶åãªã©)ããšãããããªå Žåã§ãããããã£ãå Žé¢ã§ã¯ãããçšã®
Formatterãç¹å®ã®Handlerãšå ±ã«äœ¿ããããšããã®ã¯ããããããšã§ãããã®ãã¬ãŒ (ããã³
Logger.propagate屿§ãèæ ®ããäžã§å®å¹çã«ã€ãã³ããäŒæããç¥å ã®ãã¬ãŒ) ã«ãã³ãã©ãæ¥ç¶ãããŠããªãå Žåãã¡ãã»ãŒãžã¯lastResortã«èšå®ããããã³ãã©ãŒã«éãããŸããããŒãžã§ã³ 3.2 ã§å€æŽ: stack_info ãã©ã¡ãŒã¿ã远å ãããŸããã
ããŒãžã§ã³ 3.5 ã§å€æŽ: exc_info ãã©ã¡ãŒã¿ã¯äŸå€ã€ã³ã¹ã¿ã³ã¹ãåãå ¥ããããšãå¯èœã§ãã
ããŒãžã§ã³ 3.8 ã§å€æŽ: stacklevel åŒæ°ã远å ãããŸããã
- info(msg, *args, **kwargs)¶
ã¬ãã«
INFOã®ã¡ãã»ãŒãžããã®ãã¬ãŒã§èšé²ããŸããåŒæ°ã¯debug()ãšåãããã«è§£éãããŸãã
- warning(msg, *args, **kwargs)¶
ã¬ãã«
WARNINGã®ã¡ãã»ãŒãžããã®ãã¬ãŒã§èšé²ããŸããåŒæ°ã¯debug()ãšåãããã«è§£éãããŸããæ³šé
warningãšæ©èœçã«ç䟡ãªå€ãã¡ãœããwarnããããŸããwarnã¯å»æ¢äºå®ãªã®ã§äœ¿ããªãã§ãã ãã - 代ããã«warningã䜿ã£ãŠãã ããã
- error(msg, *args, **kwargs)¶
ã¬ãã«
ERRORã®ã¡ãã»ãŒãžããã®ãã¬ãŒã§èšé²ããŸããåŒæ°ã¯debug()ãšåãããã«è§£éãããŸãã
- critical(msg, *args, **kwargs)¶
ã¬ãã«
CRITICALã®ã¡ãã»ãŒãžããã®ãã¬ãŒã§èšé²ããŸããåŒæ°ã¯debug()ãšåãããã«è§£éãããŸãã
- log(level, msg, *args, **kwargs)¶
æŽæ°ã§è¡šããã¬ãã« level ã®ã¡ãã»ãŒãžããã®ãã¬ãŒã§èšé²ããŸãããã®ä»ã®åŒæ°ã¯
debug()ãšåãããã«è§£éãããŸãã
- exception(msg, *args, **kwargs)¶
ã¬ãã«
ERRORã®ã¡ãã»ãŒãžããã®ãã¬ãŒã§èšé²ããŸããåŒæ°ã¯debug()ãšåãããã«è§£éãããŸããäŸå€æ å ±ããã°ã¡ãã»ãŒãžã«è¿œå ãããŸãããã®ã¡ãœããã¯äŸå€ãã³ãã©ããã®ã¿åŒã³åºãããã¹ãã§ãã
- addFilter(filter)¶
æå®ããããã£ã«ã¿ filter ããã®ãã¬ãŒã«è¿œå ããŸãã
- removeFilter(filter)¶
æå®ããããã£ã«ã¿ filter ããã®ãã¬ãŒããåãé€ããŸãã
- filter(record)¶
ã¬ã³ãŒãã«å¯ŸããŠãã®ãã¬ãŒã®ãã£ã«ã¿ãé©çšããã¬ã³ãŒããåŠçãããã¹ãå Žåã«
Trueãè¿ããŸãããã£ã«ã¿ã®ããããã®å€ãåœãè¿ããŸã§ããããã¯é çªã«è©ŠãããŠãããŸããããããåœãè¿ããªããã°ãã¬ã³ãŒãã¯åŠçããã(ãã³ãã©ã«æž¡ããã)ããšã«ãªããŸããã²ãšã€ã§ãåœãè¿ãã°ãçºçããã¬ã³ãŒãã¯ãã¯ãåŠçãããããšã¯ãããŸããã
- addHandler(hdlr)¶
æå®ããããã³ãã© hdlr ããã®ãã¬ãŒã«è¿œå ããŸãã
- removeHandler(hdlr)¶
æå®ããããã³ãã© hdlr ããã®ãã¬ãŒããåãé€ããŸãã
- findCaller(stack_info=False, stacklevel=1)¶
åŒã³åºãå ã®ãœãŒã¹ãã¡ã€ã«åãšè¡çªå·ã調ã¹ãŸãããã¡ã€ã«åãšè¡çªå·ã颿°åãã¹ã¿ãã¯æ å ±ã 4 èŠçŽ ã®ã¿ãã«ã§è¿ããŸããstack_info ã
Trueã§ãªããã°ãã¹ã¿ãã¯æ å ±ã¯Noneãè¿ãããŸããstacklevel ãã©ã¡ãŒã¿ã¯
debug()ãä»ã®APIãåŒã³åºãã³ãŒãããæž¡ãããŸããããããã1ããã倧ããå Žåã¯ããã®è¶ éåã¯è¿ãå€ã決å®ããåã«ã¹ã¿ãã¯ãã¬ãŒã ãã¹ãããããæ°ãšããŠå©çšãããŸããããã¯éåžžããã°APIããã«ããŒãã©ãããŒçµç±ã§åŒã³åºãå Žåã«äŸ¿å©ã§ããããããããšã§ãã€ãã³ããã°ã«èšé²ãããæ å ±ã¯ãã«ããŒãã©ãããŒã®ã³ãŒãã§ã¯ãªããããããåŒã³åºããŠããã³ãŒãã®ãã®ãšãªããŸãã
- handle(record)¶
ã¬ã³ãŒããããã®ãã¬ãŒããã³ãã®äžäœãã¬ãŒ (ãã ã propagate ã®å€ã false ã«ãªã£ããšãããŸã§) ã«é¢é£ä»ããããŠãããã¹ãŠã®ãã³ãã©ã«æž¡ããŠåŠçããŸãããã®ã¡ãœããã¯ãããŒã«ã«ã§çæãããã¬ã³ãŒãã ãã§ãªãããœã±ããããåä¿¡ãã unpickle ãããã¬ã³ãŒãã«å¯ŸããŠãåæ§ã«çšããããŸãã
filter()ã«ãã£ãŠããã¬ãŒã¬ãã«ã§ã®ãã£ã«ã¿ãé©çšãããŸãã
- makeRecord(name, level, fn, lno, msg, args, exc_info, func=None, extra=None, sinfo=None)¶
ãã®ã¡ãœããã¯ãç¹æ®ãª
LogRecordã€ã³ã¹ã¿ã³ã¹ãçæããããã«ãµãã¯ã©ã¹ã§ãªãŒãã©ã€ãã§ãããã¡ã¯ããªã¡ãœããã§ãã
- hasHandlers()¶
ãã®ãã¬ãŒã«ãã³ãã©ãèšå®ãããŠãããã©ããã調ã¹ãŸãã ãã®ããã«ããã®ãã¬ãŒãšãã¬ãŒéå±€ã«ãããç¥å ãããã³ãã©ãæ¢ããŸãã ãã³ãã©ãèŠã€ããã°
Trueãããã§ãªããã°Falseãè¿ããŸãã ãã®ã¡ãœããã¯ã'propagate' 屿§ãåœã«èšå®ããããã¬ãŒãèŠã€ãããšãããã«äžäœã®æ¢çŽ¢ããããŸãããã®ãã¬ãŒãããã³ãã©ãååšãããã©ãããã§ãã¯ãããæåŸã®ãã¬ãŒã«ãªããŸããAdded in version 3.2.
ããŒãžã§ã³ 3.7 ã§å€æŽ: ãã¬ãŒã® pickle åãš unpickle åãã§ããããã«ãªããŸããã
ãã®ã³ã°ã¬ãã«Â¶
ãã°ã¬ãã«ã®æ°å€ã¯ä»¥äžã®è¡šã®ããã«äžããããŠããŸãããããã¯åºæ¬çã«èªåã§ã¬ãã«ãå®çŸ©ããã人ã®ããã®ãã®ã§ãå®çŸ©ããã¬ãã«ãæ¢åã®ã¬ãã«ã®éã«äœçœ®ã¥ããããã«ã¯å ·äœçãªå€ãå¿ èŠã«ãªããŸããããæ°å€ãä»ã®ã¬ãã«ãšåãã ã£ãããæ¢åã®å€ã¯äžæžããããã®ååã¯å€±ãããŸãã
ã¬ãã« |
æ°å€ |
ã©ãããæå³ã / ãã€äœ¿çšããã¹ãã |
|---|---|---|
|
0 |
ãã¬ãŒã«å¯ŸããŠãã®ã¬ãã«ãèšå®ãããå Žåãå®éã®ãã°ã¬ãã«ã¯ç¥å
ã®ãã¬ãŒãåç
§ããŠæ±ºããããšãæå³ããŸããå®å¹ãã°ã¬ãã«ã |
|
10 |
詳现æ å ±ãå žåçã«ã¯ãåé¡ãçºçããéã«åå ãçªãæ¢ããããšããéçºè åãã®æ å ±ã |
|
20 |
æ³å®ãããéãã®ããšãèµ·ãã£ãããšã®ç¢ºèªã |
|
30 |
æ³å®å€ã®äºè±¡ããŸãã¯è¿ãå°æ¥ã«åé¡ãèµ·ããå¯èœæ§ (ããšãã° 'disk space low' ããªãã¡ãã£ã¹ã¯ç©ºã容éã®äœäž) ã®è¡šç€ºããœãããŠãšã¢ã¯åŒãç¶ãæåŸ éãã«åäœããŠããç¶æ ã |
|
40 |
ããé倧ãªåé¡ã«ããããœãããŠã§ã¢ãããæ©èœãå®è¡ã§ããªãããšã |
|
50 |
ããã°ã©ã èªäœãå®è¡ãç¶ããããªãããšã衚ããé倧ãªãšã©ãŒã |
ãã³ãã©ãªããžã§ã¯ã¶
ãã³ãã© (Handler) ã¯ä»¥äžã®å±æ§ãšã¡ãœãããæã¡ãŸãã Handler ã¯çŽæ¥ã€ã³ã¹ã¿ã³ã¹åãããããšã¯ãããŸãã; ãã®ã¯ã©ã¹ã¯ãã䟿å©ãªãµãã¯ã©ã¹ã®åºåºã¯ã©ã¹ãšããŠåããŸããããããªããããµãã¯ã©ã¹ã«ããã __init__() ã¡ãœããã§ã¯ã Handler.__init__() ãåŒã³åºãå¿
èŠããããŸãã
- class logging.Handler¶
- __init__(level=NOTSET)¶
ã¬ãã«ãèšå®ããŠã
Handlerã€ã³ã¹ã¿ã³ã¹ãåæåããŸãã空ã®ãªã¹ãã䜿ã£ãŠãã£ã«ã¿ãèšå®ãã I/O æ©æ§ãžã®ã¢ã¯ã»ã¹ãçŽååããããã« (createLock()ã䜿ã£ãŠ) ããã¯ãçæããŸãã
- createLock()¶
ã¹ã¬ããã»ãŒãã§ãªãèåŸã® I/O æ©èœã«å¯Ÿããã¢ã¯ã»ã¹ãçŽååããããã«çšããããã¹ã¬ãããã㯠(thread lock) ãåæåããŸãã
- acquire()¶
createLock()ã§çæãããã¹ã¬ããããã¯ãç²åŸããŸãã
- setLevel(level)¶
ãã®ãã³ãã©ã«å¯ŸããéŸå€ã level ã«èšå®ããŸãã level ãããæ·±å»ã§ãªããã°ã¡ãã»ãŒãžã¯ç¡èŠãããŸãã ãã³ãã©ãçæãããéãã¬ãã«ã¯
NOTSET(ãã¹ãŠã®ã¡ãã»ãŒãžãåŠçããã) ã«èšå®ãããŸããã¬ãã«ã®äžèЧã«ã€ããŠã¯ ãã®ã³ã°ã¬ãã« ãåç §ããŠãã ããã
ããŒãžã§ã³ 3.2 ã§å€æŽ: level ãã©ã¡ãŒã¿ã¯ã
INFOã®ãããªæŽæ°å®æ°ã®ä»£ããã« 'INFO' ã®ãããªã¬ãã«ã®æåå衚çŸãåãä»ããããã«ãªããŸããã
- setFormatter(fmt)¶
Sets the formatter for this handler to fmt. The fmt argument must be a
Formatterinstance orNone.
- addFilter(filter)¶
æå®ããããã£ã«ã¿ filter ããã®ãã³ãã©ã«è¿œå ããŸãã
- removeFilter(filter)¶
æå®ããããã£ã«ã¿ filter ããã®ãã³ãã©ããé€å»ããŸãã
- filter(record)¶
ã¬ã³ãŒãã«å¯ŸããŠãã®ãã³ãã©ã®ãã£ã«ã¿ãé©çšããã¬ã³ãŒããåŠçãããã¹ãå Žåã«
Trueãè¿ããŸãããã£ã«ã¿ã®ããããã®å€ãåœãè¿ããŸã§ããããã¯é çªã«è©ŠãããŠãããŸããããããåœãè¿ããªããã°ãã¬ã³ãŒãã¯çºè¡ãããããšã«ãªããŸããã²ãšã€ã§ãåœãè¿ãã°ããã³ãã©ã¯ã¬ã³ãŒããçºè¡ããŸããã
- flush()¶
ãã¹ãŠã®ãã°åºåããã©ãã·ã¥ãããããã«ããŸãããã®ã¯ã©ã¹ã®ããŒãžã§ã³ã§ã¯ãªã«ãè¡ããããµãã¯ã©ã¹ã§å®è£ ããããã®ãã®ã§ãã
- close()¶
Tidy up any resources used by the handler. This version does no output but removes the handler from an internal map of handlers, which is used for handler lookup by name.
Subclasses should ensure that this gets called from overridden
close()methods.
- handle(record)¶
ãã³ãã©ã«è¿œå ããããã£ã«ã¿ã®æ¡ä»¶ã«å¿ããŠãæå®ããããã°ã¬ã³ãŒããåºåããŸãããã®ã¡ãœãã㯠I/O ã¹ã¬ããããã¯ã®ç²åŸ/è§£æŸã䌎ãå®éã®ãã°åºåãã©ããããŸãã
- handleError(record)¶
ãã®ã¡ãœããã¯ã
emit()ã®åŒã³åºãäžã«äŸå€ã«ééããéã«ãã³ãã©ããåŒã³åºãããããšãæ³å®ããŠããŸããã¢ãžã¥ãŒã«ã¬ãã«ã®å±æ§raiseExceptionsãFalseã®å ŽåãäŸå€ã¯éãã«ç¡èŠãããŸããããã¯ãã»ãšãã©ã®å Žåã§ãã®ã³ã°ã·ã¹ãã ã«æåŸ ãããæåã§ã - ãªããªããã»ãšãã©ã®ãŠãŒã¶ãŒã¯ãã®ã³ã°ã·ã¹ãã ã®äžã§èµ·ãã£ããšã©ãŒãªã©ã«èå³ã¯ãªããã¢ããªã±ãŒã·ã§ã³ãšã©ãŒã®æ¹ã«ããé¢å¿ãããããã§ããããããå¿ èŠãªãã°ãã®æåãèªäœã®ãã³ãã©ã§çœ®ãæããããšãã§ããŸããåŒæ°ã«æå®ãããã¬ã³ãŒãã¯äŸå€çºçæã«åŠçããããã®ã§ãã (raiseExceptionsã®ããã©ã«ãå€ã¯ãéçºäžã«ã¯ãã®æ¹ã䟿å©ãªã®ã§ãTrueã§ã)ã
- format(record)¶
ã¬ã³ãŒãã«å¯ŸããæžåŒåãè¡ããŸã - ãã©ãŒããã¿ãèšå®ãããŠããã°ãããã䜿ããŸããããã§ãªãå Žåãã¢ãžã¥ãŒã«ã«ããã©ã«ãæå®ããããã©ãŒããã¿ã䜿ããŸãã
- emit(record)¶
æå®ããããã°èšé²ã¬ã³ãŒããå®éã«ãã°èšé²ããéã®ãã¹ãŠã®åŠçãè¡ããŸãããã®ã¡ãœããã¯ãµãã¯ã©ã¹ã§å®è£ ãããããšãæå³ããŠããããã®ãããã®ã¯ã©ã¹ã®ããŒãžã§ã³ã¯
NotImplementedErrorãéåºããŸããèŠå
ãã®ã¡ãœããã¯ãã³ãã©ã¬ãã«ã®ããã¯ãååŸããåŸã§åŒã³åºãããŸãããŸããããã¯ã¯ãã®ã¡ãœããããªã¿ãŒã³ããåŸã§è§£æŸãããŸãããã®ã¡ãœããããªãŒããŒã©ã€ãããå Žåãããã¯ãååŸããå¯èœæ§ã®ãã logging API ã®ä»ã®é¢æ°ãã¡ãœããã®åŒã³åºãã«æ³šæããŠãã ããããã®ãããªå®è£ ã¯ãããããã¯ãåŒãèµ·ããå¯èœæ§ããããŸããç¹ã«ä»¥äžã®ç¹ã«æ³šæããŠãã ãã:
ãã®ã³ã°ãæ§æããããã® API ã¯ã¢ãžã¥ãŒã«ã¬ãã«ã®ããã¯ãååŸãããã®åŸãã³ãã©ãæ§æããéã«åã ã®ãã³ãã©ã«å¯ŸããŠãã³ãã©ã¬ãã«ã®ããã¯ãååŸããŸãã
å€ãã®ãã®ã³ã° API ã¯ã¢ãžã¥ãŒã«ã¬ãã«ã®ããã¯ãååŸããŸãããã®ãã㪠API ããã®ã¡ãœããããåŒã°ããå Žåãä»ã®ã¹ã¬ãããããã®ã³ã°ãæ§æããããã® API åŒã³åºããè¡ããããšãã«ãããããã¯ã«é¥ãå¯èœæ§ããããŸããããã¯ä»ã®ã¹ã¬ããããã³ãã©ã¬ãã«ã®ããã¯ãååŸãã åã« ã¢ãžã¥ãŒã«ã¬ãã«ã®ããã¯ãååŸããããšããäžæ¹ã§ã (ãã®ã¡ãœããã¯ãã³ãã©ã¬ãã«ã®ããã¯ãæ¢ã«ååŸãããç¶æ ã§åŒã³åºãããŠãããã) ãã®ã¡ãœãããåŒã³åºããã¹ã¬ããã¯ãã³ãã©ã¬ãã«ã®ããã¯ãååŸãã åŸã§ ã¢ãžã¥ãŒã«ã¬ãã«ã®ããã¯ãååŸããããšããããã§ãã
æšæºãšããŠå«ãŸããŠãããã³ãã©ã«ã€ããŠã¯ã logging.handlers ãåç
§ããŠãã ããã
ãã©ãŒããã¿ãªããžã§ã¯ã¶
- class logging.Formatter(fmt=None, datefmt=None, style='%', validate=True, *, defaults=None)¶
LogRecordãã人éãŸãã¯å€éšã®ã·ã¹ãã ãè§£éå¯èœãªåºåæååã«å€æãã責任ãæã¡ãŸãã- ãã©ã¡ãŒã¿:
fmt (str) -- style ã§æå®ãããæžåŒã«ããšã¥ããåºåãã°å šäœã«å¯ŸããæžåŒæååã§ãããããã³ã°ã®ããŒã¯
LogRecordãªããžã§ã¯ãã® LogRecord 屿§ ããåãåºãããŸããç¹ã«æå®ããªãå Žåã¯ããã°ã¡ãã»ãŒãžããããã'%(message)s'ã䜿ãããŸããdatefmt (str) -- A format string for the date/time portion of the logged output. If not specified, the default described in
formatTime()is used.style (str) --
'%', ãŸãã¯'$'ã®ããããã§ãæžåŒæååããã°ããŒã¿ãšã©ã®ããã«ããŒãžãããããæ±ºããŸã: printf 圢åŒã®æååæžåŒå (%),str.format()({) ãŸãã¯string.Template() ã®ããããã䜿ããŸãããã®åŒæ°ã¯ fmt ã ãã«é©çšãããŸã (ããšãã°'%(message)s'ã«å¯ŸããŠ'{message}') ãããã®ã³ã°ã¡ãœããã«æž¡ãããå®éã®ãã°ã¡ãã»ãŒãžã«ã¯é©çšãããŸããããã£ãœãã'{'ã$ã䜿ã£ãŠãã°ã¡ãã»ãŒãžããã©ãŒããããã ä»ã®æ¹æ³ ãååšããŸããvalidate (bool) --
Trueãæå®ããããš (ããã©ã«ã) ã fmt ãš style ãäžæ£ãªå Žåããããããäžé©åãªçµã¿åããã ã£ãå Žåã«ValueErroräŸå€ãéåºããŸã; ããšãã°logging.Formatter('%(asctime)s - %(message)s', style='{')ã¯äŸå€ãšãªããŸããdefaults (dict[str, Any]) -- ã«ã¹ã¿ã ãã£ãŒã«ãã«äœ¿çšãããããã©ã«ãå€ãæå®ããèŸæžã§ããäŸãã°
logging.Formatter('%(ip)s %(message)s', defaults={"ip": None})ã®ããã«äœ¿ããŸãã
ããŒãžã§ã³ 3.2 ã§å€æŽ: style ãã©ã¡ãŒã¿ã远å ãããŸããã
ããŒãžã§ã³ 3.8 ã§å€æŽ: validate ãã©ã¡ãŒã¿ã远å ãããŸããã
ããŒãžã§ã³ 3.10 ã§å€æŽ: defaults ãã©ã¡ãŒã¿ã远å ãããŸããã
- format(record)¶
ã¬ã³ãŒãã®å±æ§èŸæžããæååãæžåŒåããæŒç®ã§è¢«æŒç®åãšããŠäœ¿ãããŸããæžåŒåãããçµæã®æååãè¿ããŸããèŸæžãæžåŒåããåã«ãäºã€ã®æºå段éãçµãŸããã¬ã³ãŒãã® message 屿§ã msg % args ã䜿ã£ãŠåŠçãããŸããæžåŒåãããæååã
'(asctime)'ãå«ããªããformatTime()ãåŒã³åºãããã€ãã³ãã®çºçæå»ãæžåŒåããŸããäŸå€æ å ±ãååšããå ŽåãformatException()ã䜿ã£ãŠæžåŒåãããã¡ãã»ãŒãžã«è¿œå ãããŸããããã§æ³šæããŠããã ãããã®ã¯ãæžåŒåãããäŸå€æ å ±ã¯ exc_text ã«ãã£ãã·ã¥ããããšããç¹ã§ãããããæçšãªã®ã¯äŸå€æ å ±ãããã¯ã«åãããŠåç·äžãéãããšãã§ããããã§ããããããäºã€ä»¥äžã®Formatterãµãã¯ã©ã¹ã§äŸå€æ å ±ã®æžåŒåãã«ã¹ã¿ãã€ãºããŠããå Žåã«ã¯æ³šæãå¿ èŠã«ãªããŸãããã®å Žåããã©ãŒããã¿ãæžåŒåãçµããããšã«ãã£ãã·ã¥ãã¯ãªã¢ããŠïŒ ext_text 屿§ã«Noneãèšå®ããŠïŒã次ã®ãã©ãŒããã¿ããã£ãã·ã¥ãããå€ã䜿ããã«æ°é®®ãªç¶æ ã§åèšç®ããããã«ããªããã°ãªããªãããšã«ãªããŸããã¹ã¿ãã¯æ å ±ãå©çšå¯èœãªå Žåã(å¿ èŠãªãã°
formatStack()ã䜿ã£ãŠæŽåœ¢ããäžã§) ã¹ã¿ãã¯æ å ±ãäŸå€æ å ±ã®åŸã«è¿œå ãããŸãã
- formatTime(record, datefmt=None)¶
ãã®ã¡ãœããã¯ããã©ãŒããã¿ãæžåŒåãããæéãå©çšãããéã«ã
format()ããåŒã³åºãããŸãã ãã®ã¡ãœããã¯ç¹å®ã®èŠæ±ãæäŸããããã«ãã©ãŒããã¿ã§äžæžãããããšãã§ããŸãããåºæ¬çãªæ¯ãèãã¯ä»¥äžã®ããã«ãªããŸã: datefmt (æåå) ãæå®ãããå Žåãã¬ã³ãŒããçæãããæå»ãæžåŒåããããã«time.strftime()ã§äœ¿ãããŸãã ããã§ãªãå Žåã '%Y-%m-%d %H:%M:%S,uuu' ãšãããã©ãŒãããã䜿ãããŸãã uuu éšåã¯ããªç§å€ã§ããã以å€ã®æåã¯time.strftime()ããã¥ã¡ã³ãã«åŸããŸãã ãã®ãã©ãŒãããã®æå»ã®äŸã¯2003-01-23 00:29:50,411ã§ãã çµæã®æååãè¿ãããŸãããã®é¢æ°ã¯ããŠãŒã¶ãèšå®ã§ãã颿°ã䜿ã£ãŠãçææå»ãã¿ãã«ã«å€æããŸããããã©ã«ãã§ã¯ã
time.localtime()ã䜿ãããŸããç¹å®ã®ãã©ãŒããã¿ã€ã³ã¹ã¿ã³ã¹ã«å¯ŸããŠããã倿Žããã«ã¯ãconverter屿§ãtime.localtime()ãtime.gmtime()ãšåã眲åããã€é¢æ°ã«èšå®ããŠãã ããããã¹ãŠã®ãã©ãŒããã¿ã€ã³ã¹ã¿ã³ã¹ã«å¯ŸããŠããã倿Žããã«ã¯ãäŸãã°å šãŠã®ãã®ã³ã°æå»ã GMT ã§è¡šç€ºããã«ã¯ãFormatterã¯ã©ã¹ã®converter屿§ãèšå®ããŠãã ãããããŒãžã§ã³ 3.3 ã§å€æŽ: 以åã¯ãããã©ã«ãã®ãã©ãŒãããããã®äŸã®ããã«ããŒãã³ãŒãã£ã³ã°ãããŠããŸãã:
2010-09-06 22:38:15,292ããã§ãã³ã³ãã®åã®éšå㯠strptime ãã©ãŒãããæåå ('%Y-%m-%d %H:%M:%S') ã«ãã£ãŠæ±ãããéšåã§ãã³ã³ãã®åŸã®éšåã¯ããªç§å€ã§ããstrptime ã«ããªç§ã®ãã©ãŒããããã¬ãŒã¹ãã«ããŒããªãã®ã§ãããªç§å€ã¯å¥ã®ãã©ãŒãããæåå'%s,%03d'ã䜿çšããŠè¿œå ãããŸãããããŠããããã®ãã©ãŒãããæååã¯äž¡æ¹ãšããã®ã¡ãœããã§ããŒãã³ãŒãã£ã³ã°ãããŠããŸããã倿ŽåŸã¯ããããã®æååã¯ã¯ã©ã¹ã¬ãã«å±æ§ãšããŠå®çŸ©ãããå¿ èŠãªãã€ã³ã¹ã¿ã³ã¹ã¬ãã«ã§ãªãŒããŒã©ã€ãããããšãã§ããŸãã屿§ã®ååã¯default_time_format(strptime æžåŒæååçš) ãšdefault_msec_format(ããªç§å€ã®è¿œå çš) ã§ããããŒãžã§ã³ 3.9 ã§å€æŽ:
default_msec_formatåŒæ°ãNoneã§ããããšã蚱容ããŸãã
- formatException(exc_info)¶
æå®ãããäŸå€æ å ± (
sys.exc_info()ãè¿ããããªæšæºäŸå€ã®ã¿ãã«) ãæååãšããŠæžåŒåããŸããããã©ã«ãã®å®è£ ã¯åã«traceback.print_exception()ã䜿ããŸããçµæã®æååãè¿ãããŸãã
- formatStack(stack_info)¶
æå®ãããã¹ã¿ãã¯æ å ±ãæååãšããŠãã©ãŒãããããŸã (
traceback.print_stack()ã«ãã£ãŠè¿ãããæååã§ãããæåŸã®æ¹è¡ãåãé€ãããŠããŸã)ããã®ããã©ã«ãå®è£ ã¯ãåã«å ¥åå€ããã®ãŸãŸè¿ããŸãã
- class logging.BufferingFormatter(linefmt=None)¶
è€æ°ã®ã¬ã³ãŒãããŸãšããŠãã©ãŒããããããå Žåã®ã¯ã©ã¹å®çŸ©ã«é©ããåºåºã¯ã©ã¹ã§ããåè¡ (åäžã®ã¬ã³ãŒãã«çžåœããŸã) ããã©ãŒãããããããã«äœ¿ã
Formatterã€ã³ã¹ã¿ã³ã¹ãæž¡ãããšãã§ããŸããç¹ã«æå®ããªãå Žåã¯ããã©ã«ãã®ãã©ãŒããã¿ (ã€ãã³ãã®ã¡ãã»ãŒãžã ããåºåãããã©ãŒããã¿) ã䜿ãããŸãã- formatHeader(records)¶
è€æ°ã®ã¬ã³ãŒã ã®ãªã¹ãã«å¯Ÿããããããè¿ããŸããåºåºã¯ã©ã¹ã®å®è£ ã¯åã«ç©ºã®æååãè¿ãã ãã§ããã¬ã³ãŒãæ°ãã¿ã€ãã«ã衚瀺ãããããããã¯ã»ãã¬ãŒã¿è¡ããããªã©ããããã«å¯ŸããŠç¹å¥ãªæ¯ãèããå¿ èŠãªå Žåã¯ãã®ã¡ãœããããªãŒããŒã©ã€ãããå¿ èŠããããŸãã
è€æ°ã®ã¬ã³ãŒã ã®ãªã¹ãã«å¯Ÿããããã¿ãè¿ããŸããåºåºã¯ã©ã¹ã®å®è£ ã¯åã«ç©ºã®æååãè¿ãã ãã§ããã¬ã³ãŒãæ°ãã»ãã¬ãŒã¿è¡ã®è¡šç€ºãªã©ãããã¿ã«å¯ŸããŠç¹å¥ãªæ¯ãèããå¿ èŠãªå Žåã¯ãã®ã¡ãœããããªãŒããŒã©ã€ãããå¿ èŠããããŸãã
- format(records)¶
è€æ°ã®ã¬ã³ãŒã ã®ãªã¹ãã«å¯Ÿãããã©ãŒãããæžã¿ããã¹ããè¿ããŸããåºåºã¯ã©ã¹ã®å®è£ ã¯ãã¬ã³ãŒãããªããã°ç©ºã®æååãè¿ããã¬ã³ãŒããããå Žåã¯ããããåäžã®ã¬ã³ãŒãããã©ãŒãããããããã®ã©ã€ã³ãã©ãŒããã¿ã§åã¬ã³ãŒãããã©ãŒãããããæååããããŠããã¿ãå šãŠé£çµãããã®ãè¿ããŸãã
ãã£ã«ã¿ãªããžã§ã¯ã¶
ãã£ã«ã¿ (Filter) ã¯ããã³ãã© ã ãã¬ãŒ ã«ãã£ãŠäœ¿ãããã¬ãã«ã«ãã£ãŠæäŸãããã®ãããæŽç·Žããããã£ã«ã¿ãªã³ã°ãå®çŸããŸããåºåºã®ãã£ã«ã¿ã¯ã©ã¹ã¯ããã¬ãŒéå±€æ§é å
ã®ç¹å®å°ç¹ã®é
äžã«ããã€ãã³ãã ããèš±å¯ããŸããäŸãã°ã'A.B' ã§åæåããããã£ã«ã¿ã¯ããã¬ãŒ 'A.B', 'A.B.C', 'A.B.C.D', 'A.B.D' çã«ãã£ãŠèšé²ãããã€ãã³ãã¯èš±å¯ããŸããã'A.BB', 'B.A.B' ãªã©ã¯èš±å¯ããŸãããç©ºã®æååã§åæåãããå Žåããã¹ãŠã®ã€ãã³ããééãããŸãã
- class logging.Filter(name='')¶
Filterã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ãè¿ããŸãã name ãæå®ãããŠããã°ã name ã¯ãã¬ãŒã®ååã衚ããŸããæå®ããããã¬ãŒãšãã®åãã¬ãŒã®ã€ãã³ãããã£ã«ã¿ãééã§ããããã«ãªããŸãã name ãæå®ãããªããã°ããã¹ãŠã®ã€ãã³ããééãããŸãã- filter(record)¶
æå®ããããã°ã¬ã³ãŒãã¯èšé²ãããã§ããããïŒçããããããããªã false ãããã¯ãããªã true ãè¿ããŸãããã£ã«ã¿ã¯åãåã£ããã°ã¬ã³ãŒããã®ãã®ãç·šéãããããã®åŸã®ã€ãã³ãåŠçã«ãããŠå ã®ãã°ã¬ã³ãŒãã«åã£ãŠä»£ããããŸã£ããç°ãªããã°ã¬ã³ãŒãã€ã³ã¹ã¿ã³ã¹ãè¿ãå¯èœæ§ããããŸãã
ãã³ãã©ã«å¯Ÿãããã£ã«ã¿ã¯ãã³ãã©ãã€ãã³ããçºè¡ããåã«è©Šãããäžæ¹ã§ã¯ãã¬ãŒã«å¯Ÿãããã£ã«ã¿ã¯ãã€ãã³ãã(debug(), info() ãªã©ã«ãã£ãŠ)ãã®ã³ã°ãããéã«ã¯ããã³ãã©ã«ã€ãã³ããéä¿¡ãããåã«ã¯ãã€ã§ã詊ãããããšã«æ³šæããŠãã ããããã®ãã£ã«ã¿ããããåå«ãã¬ãŒã«ãé©çšãããŠããªãéããåå«ãã¬ãŒã«ãã£ãŠçæãããã€ãã³ãã¯ãã¬ãŒã®ãã£ã«ã¿èšå®ã«ãã£ãŠãã£ã«ã¿ãããããšã¯ãããŸããã
å®éã«ã¯ãFilter ããµãã¯ã©ã¹åããå¿
èŠã¯ãããŸãããåãæå³ã® filter ã¡ãœãããæã€ããã¹ãŠã®ã€ã³ã¹ã¿ã³ã¹ãéããŸãã
ããŒãžã§ã³ 3.2 ã§å€æŽ: ç¹æ®ãª Filter ã¯ã©ã¹ãäœã£ããã filter ã¡ãœãããæã€ä»ã®ã¯ã©ã¹ã䜿ãå¿
èŠã¯ãããŸãã: 颿° (ãããã¯ä»ã® callable) ããã£ã«ã¿ãšããŠäœ¿çšããããšãã§ããŸãããã£ã«ã¿ããžãã¯ã¯ããã£ã«ã¿ãªããžã§ã¯ãã filter 屿§ãæã£ãŠãããã©ãããã§ãã¯ããŸã: ãã filter 屿§ãæã£ãŠãããããã㯠Filter ã§ãããšä»®å®ããããã® filter() ã¡ãœãããåŒã³åºãããŸããããã§ãªããã°ããã㯠callable ã§ãããšä»®å®ãããã¬ã³ãŒããåäžã®ãã©ã¡ãŒã¿ãšããŠåŒã³åºãããŸããè¿ãããå€ã¯ filter() ã«ãã£ãŠè¿ããããã®ãšäžèŽãã¹ãã§ãã
ããŒãžã§ã³ 3.12 ã§å€æŽ: åãåã£ããã°ã¬ã³ãŒãèªäœãç·šéãã代ããã«ãå
ã®ãã°ã¬ã³ãŒãã«åã£ãŠä»£ããå¥ã® LogRecord ã€ã³ã¹ã¿ã³ã¹ãè¿ãããšãã§ããããã«ãªããŸãããããã«ããã Handler ã«ã¢ã¿ããããããã£ã«ã¿ããä»ã®ãã³ãã©ãžã®å¯äœçšã䌎ãããšãªããçºè¡åã«ãã°ã¬ã³ãŒããç·šéããããšãå¯èœã«ãªããŸãã
ãã£ã«ã¿ã¯æ¬æ¥ãã¬ã³ãŒããã¬ãã«ãããæŽç·Žãããåºæºã«åºã¥ããŠãã£ã«ã¿ããããã«äœ¿ãããŸããããããåãä»ãããããã³ãã©ããã¬ãŒã«ãã£ãŠåŠçãããã¬ã³ãŒãããã¹ãŠç£èŠããŸããããã¯ãç¹å®ã®ãã¬ãŒããã³ãã©ã«åŠçãããã¬ã³ãŒãã®æ°ãæ°ããããåŠçãããŠãã LogRecord ã®å±æ§ã远å ã倿Žãåé€ããããããšãã«äŸ¿å©ã§ãããã¡ãããLogRecord ã倿Žããã«ã¯æ³šæãå¿
èŠã§ãããããã«ããããã°ã«ã³ã³ããã¹ãæ
å ±ãæ³šå
¥ã§ããŸã (Filter ã䜿ã£ãã³ã³ããã¹ãæ
å ±ã®äŒé ãåç
§ããŠãã ãã)ã
LogRecord ãªããžã§ã¯ã¶
LogRecord ã€ã³ã¹ã¿ã³ã¹ã¯ãäœãããã°èšé²ãããã³ã« Logger ã«ãã£ãŠçæãããŸãããŸãã makeLogRecord() ãéã㊠(äŸãã°ãã¯ã€ã€ãéããŠåãåããã pickle åãããã€ãã³ããã) æåã§çæããããšãåºæ¥ãŸãã
- class logging.LogRecord(name, level, pathname, lineno, msg, args, exc_info, func=None, sinfo=None)¶
ãã®ã³ã°ãããŠããã€ãã³ãã«é©åãªãã¹ãŠã®æ å ±ãå«ã¿ãŸãã
ãã£ãšãéèŠãªæ å ±ã¯ msg ãš args ã«æž¡ããã
msg % argsã§çµåãããŠã¬ã³ãŒãã®message屿§ãçæããŸãã- ãã©ã¡ãŒã¿:
name (str) -- ãã®
LogRecordã§ããããããã€ãã³ããèšé²ãããã¬ãŒã®ååã§ããLogRecordãæã€ãã¬ãŒã®ååã¯ãããšãç°ãªã (ç¥å ã®) ãã¬ãŒã«æ¥ç¶ããããã³ãã©ããåºåããããšããŠããåžžã«åãå€ãæã€ããšã«æ³šæããŠãã ãããlevel (int) -- èšé²ãããã€ãã³ãã® æ°å€ã§ããããããã®ã³ã°ã¬ãã« (
10ãDEBUG,20ãINFOãªã©) ã§ãããã®ãã©ã¡ãŒã¿ã¯ LogRecord ã® 2ã€ã® 屿§ã«å€æãããããšã«æ³šæããŠãã ãã: æ°å€ã¯levelnoã«ããŸã察å¿ãããã°ã¬ãã«ã®ååã¯levelnameã«ä¿æãããŸããpathname (str) -- ãã®ã³ã°ã®åŒã³åºããè¡ããããœãŒã¹ãã¡ã€ã«ãžã®å®å šãªãã¹åãããããæååã§ãã
lineno (int) -- ãã®ã³ã°ã®åŒã³åºããçºãããããœãŒã¹è¡çªå·ã
msg (Any) -- ã€ãã³ãã®èª¬æã¡ãã»ãŒãžãæ§ã ãªããŒã¿ã®ãã¬ãŒã¹ãã«ããå«ãã %ãã©ãŒãããæååããä»»æã®ãªããžã§ã¯ã (ä»»æã®ãªããžã§ã¯ããã¡ãã»ãŒãžã«äœ¿çšãã ãåç §)ã
args (tuple | dict[str, Any]) -- msg åŒæ°ãšçµã¿åãããŠã€ãã³ãèšè¿°ãåŸãããã®å€æ°ããŒã¿ã§ãã
exc_info (tuple[type[BaseException], BaseException, types.TracebackType] | None) --
sys.exc_info()ã«ãã£ãŠè¿ãããçŸåšã®äŸå€æ å ±ãå«ãäŸå€ã¿ãã«ã§ããäŸå€æ å ±ããªãå Žåã¯Noneã§ããfunc (str | None) -- ãã®ã³ã°ã®åŒã³åºããè¡ã£ã颿°ãŸãã¯ã¡ãœããã®ååã§ãã
sinfo (str | None) -- çŸåšã®ã¹ã¬ããã®ã¹ã¿ãã¯ããŒã¹ãããã°åŒã³åºããŸã§ã®éã®ã¹ã¿ãã¯æ å ±ã衚ããããã¹ãæååã
- getMessage()¶
ãŠãŒã¶ãæäŸããåŒæ°ãã¡ãã»ãŒãžã«äº€ããåŸããã®
LogRecordã€ã³ã¹ã¿ã³ã¹ãžã®ã¡ãã»ãŒãžãè¿ããŸãããŠãŒã¶ããã®ã³ã°ã®åŒã³åºãã«äžããåŒæ°ãæååã§ãªããã°ããã®åŒæ°ã«str()ãåŒã°ããæååã«å€æãããŸããããã«ããã__str__ã¡ãœãããå®éã®ãã©ãŒãããæååãè¿ãããããªãŠãŒã¶å®çŸ©ã®ã¯ã©ã¹ãã¡ãã»ãŒãžãšããŠäœ¿ããŸãã
ããŒãžã§ã³ 3.2 ã§å€æŽ:
LogRecordã®çæã¯ãã¬ã³ãŒããçæããããã«äœ¿çšããããã¡ã¯ããªãæäŸããããšã«ãããããã«èšå®å¯èœã«ãªããŸããããã¡ã¯ããªã¯getLogRecordFactory()ãšsetLogRecordFactory()ã䜿çšããŠèšå®ããããšãã§ããŸã (ãã¡ã¯ããªã®ã·ã°ããã£ã«é¢ããŠã¯setLogRecordFactory()ãåç §)ããã®æ©èœã䜿ããš
LogRecordã®çææã«ç¬èªã®å€ãæ³šå ¥ããããšãã§ããŸããæ¬¡ã®ãã¿ãŒã³ã䜿ããŸã:old_factory = logging.getLogRecordFactory() def record_factory(*args, **kwargs): record = old_factory(*args, **kwargs) record.custom_attribute = 0xdecafbad return record logging.setLogRecordFactory(record_factory)
ãã®ãã¿ãŒã³ã§ã¯è€æ°ã®ãã¡ã¯ããªãã€ãªãããšãã§ããŸããããããäºãã®å±æ§ãäžæžããããããããŸãäžã«ãªã¹ããããæšæºå±æ§ãæå³ããäžæžããããããªãéããé©ããããªããšã¯äœãèµ·ãããŸãã (there should be no surprises)ã
LogRecord 屿§Â¶
LogRecord ã«ã¯å¹Ÿã€ãã®å±æ§ãããããã®ã»ãšãã©ã¯ã³ã³ã¹ãã©ã¯ã¿ã®åŒæ°ããåŸãããŸãã(ãªããLogRecord ã³ã³ã¹ãã©ã¯ã¿ã®åŒæ°ãš LogRecord 屿§ãåžžã«å³å¯ã«å¯Ÿå¿ããããã§ã¯ãããŸããã) ãããã®å±æ§ã¯ãã¬ã³ãŒãããã®ããŒã¿ããã©ãŒãããæååã«çµ±åããã®ã«äœ¿ããŸãã以äžã®ããŒãã«ã«ã屿§åãæå³ããã㊠% 圢åŒãã©ãŒãããæååã«ããã察å¿ãããã¬ãŒã¹ãã«ãã (ã¢ã«ãã¡ãããé ã«) åæããŸãã
{}-ãã©ãŒããã (str.format()) ã䜿çšããŠããã°ãæžåŒæååã®äžã§ãã¬ãŒã¹ããŒã«ããŒãšã㊠{attrname} ã䜿ãããšãã§ããŸãã $-ãã©ãŒããã (string.Template) ã䜿çšããŠããå Žåã¯ã ${attrname} 圢åŒã«ããŠãã ããããã¡ãããäž¡æ¹ã®å Žåã§ attrname ã¯äœ¿çšãããå®éã®å±æ§åã«çœ®ãæããŠãã ããã
{}-ãã©ãŒãããã®å Žåã«ã¯ã屿§åã®åŸã«ãã©ãŒããããã©ã°ãæå®ããããšãã§ããŸãã屿§åãšãã©ãŒããããã©ã°ã®éã¯ã³ãã³ã§åå²ããŸããäŸ: ãã¬ãŒã¹ããŒã«ã㌠{msecs:03.0f} ã¯ãããªã»ã«ã³ãå€ 4 ã 004 ãšããŠãã©ãŒãããããŸããå©çšå¯èœãªãªãã·ã§ã³äžã®å
šè©³çްã«é¢ããŠã¯ str.format() ããã¥ã¡ã³ããŒã·ã§ã³ãåç
§ããŠãã ããã
屿§å |
ãã©ãŒããã |
説æ |
|---|---|---|
|
ãã®ãã©ãŒããããèªåã§äœ¿ãå¿ èŠã¯ãªãã§ãããã |
|
asctime |
|
|
created |
|
|
exc_info |
ãã®ãã©ãŒããããèªåã§äœ¿ãå¿ èŠã¯ãªãã§ãããã |
( |
exc_text |
ãã®ãã©ãŒããããèªåã§äœ¿ãå¿ èŠã¯ãªãã§ãããã |
Exception information formatted as a string.
This is set when |
ãã¡ã€ã«å |
|
|
funcName |
|
ãã®ã³ã°ã®åŒã³åºããå«ã颿°ã®ååã |
levelname |
|
ã¡ãã»ãŒãžã®ããã®æåã®ãã®ã³ã°ã¬ãã« ( |
levelno |
|
ã¡ãã»ãŒãžã®ããã®æ°å€ã®ãã®ã³ã°ã¬ãã« ( |
lineno |
|
ãã®ã³ã°ã®åŒã³åºããçºãããããœãŒã¹è¡çªå· (å©çšã§ããå Žåã®ã¿)ã |
message |
|
|
module |
|
ã¢ãžã¥ãŒã« ( |
msecs |
|
|
msg |
ãã®ãã©ãŒããããèªåã§äœ¿ãå¿ èŠã¯ãªãã§ãããã |
å
ã®ãã®ã³ã°ã®åŒã³åºãã§æž¡ããããã©ãŒãããæååã |
name |
|
ãã®ã³ã°ã«äœ¿ããããã¬ãŒã®ååã |
pathname |
|
ãã®ã³ã°ã®åŒã³åºããçºãããããã¡ã€ã«ã®å®å šãªãã¹å (å©çšã§ããå Žåã®ã¿)ã |
process |
|
ããã»ã¹ ID (å©çšå¯èœãªå Žåã®ã¿)ã |
processName |
|
ããã»ã¹å (å©çšå¯èœãªå Žåã®ã¿)ã |
relativeCreated |
|
logging ã¢ãžã¥ãŒã«ãèªã¿èŸŒãŸããæå»ã«å¯ŸãããLogRecord ãçæãããæå»ããããªç§ã§è¡šãããã®ã |
stack_info |
ãã®ãã©ãŒããããèªåã§äœ¿ãå¿ èŠã¯ãªãã§ãããã |
çŸåšã®ã¹ã¬ããã§ã®ã¹ã¿ãã¯ã®åºãããã®ã¬ã³ãŒãã®çæã«åž°çãããã°åŒã³åºããŸã§ã®ã¹ã¿ãã¯ãã¬ãŒã æ å ± (å©çšå¯èœãªå Žå)ã |
thread |
|
ã¹ã¬ãã ID (å©çšå¯èœãªå Žåã®ã¿)ã |
threadName |
|
ã¹ã¬ããå (å©çšå¯èœãªå Žåã®ã¿)ã |
taskName |
|
|
ããŒãžã§ã³ 3.1 ã§å€æŽ: processName ã远å ãããŸããã
ããŒãžã§ã³ 3.12 ã§å€æŽ: taskName ã远å ãããŸããã
LoggerAdapter ãªããžã§ã¯ã¶
LoggerAdapter ã€ã³ã¹ã¿ã³ã¹ã¯æèæ
å ±ããã°èšé²åŒã³åºãã«æž¡ãã®ãç°¡åã«ããããã«äœ¿ãããŸããäœ¿ãæ¹ã®äŸã¯ ã³ã³ããã¹ãæ
å ±ããã°èšé²åºåã«ä»å ãã ãåç
§ããŠãã ããã
- class logging.LoggerAdapter(logger, extra=None, merge_extra=False)¶
Returns an instance of
LoggerAdapterinitialized with an underlyingLoggerinstance, an optional dict-like object (extra), and an optional boolean (merge_extra) indicating whether or not the extra argument of individual log calls should be merged with theLoggerAdapterextra. The default behavior is to ignore the extra argument of individual log calls and only use the one of theLoggerAdapterinstance- process(msg, kwargs)¶
æèæ å ±ãæ¿å ¥ããããã«ããã°èšé²åŒã³åºãã«æž¡ãããã¡ãã»ãŒãžããã³/ãŸãã¯ããŒã¯ãŒãåŒæ°ã«å€æŽãå ããŸããããã§ã®å®è£ 㯠extra ãšããŠã³ã³ã¹ãã©ã¯ã¿ã«æž¡ããããªããžã§ã¯ããåãã'extra' ããŒã䜿ã£ãŠ kwargs ã«å ããŸããè¿ãå€ã¯ (msg, kwargs) ãšããã¿ãã«ã§ã(倿ŽãããŠããã¯ãã®) æž¡ãããåŒæ°ãå«ã¿ãŸãã
- manager¶
èåŸã«ãã logger ã®
managerã¡ãœããã代çã§åŒã³åºããŸãã
- _log¶
èåŸã«ãã logger ã®
_log()ã¡ãœããã代çã§åŒã³åºããŸãã
LoggerAdapterã¯äžèšã«å ãLoggerã®ã¡ãœããdebug(),info(),warning(),error(),exception(),critical(),log(),isEnabledFor(),getEffectiveLevel(),setLevel(),hasHandlers()ããµããŒãããŸãããããã¯Loggerã®å¯Ÿå¿ããã¡ãœãããšåãã·ã°ããã£ãæã€ããã2ã€ã®ã€ã³ã¹ã¿ã³ã¹ã¯åºå¥ããã«å©çšåºæ¥ãŸããããŒãžã§ã³ 3.2 ã§å€æŽ:
isEnabledFor(),getEffectiveLevel(),setLevel(),hasHandlers()ãLoggerAdapterã«è¿œå ãããŸããããããã¡ãœããã¯å ã®ãã¬ãŒã«åŠçãå§è²ããŸããããŒãžã§ã³ 3.6 ã§å€æŽ: åºåºã®ãã¬ãŒã«ç§»è²ããã¢ããã¿ãŒããã¹ãã§ããããã«ããããã«
manager屿§ãš_log()ã¡ãœããã远å ãããŸãããããŒãžã§ã³ 3.10 ã§å€æŽ: extra åŒæ°ãä»»æã«ãªããŸããã
ããŒãžã§ã³ 3.13 ã§å€æŽ: merge_extra åŒæ°ã远å ãããŸããã
ã¹ã¬ããã»ãŒãæ§Â¶
logging ã¢ãžã¥ãŒã«ã¯ãã¯ã©ã€ã¢ã³ãã§ç¹æ®ãªäœæ¥ãå¿ èŠãšããªãéãã¹ã¬ããã»ãŒãã«ãªã£ãŠããŸãããã®ã¹ã¬ããã»ãŒãæ§ã¯ã¹ã¬ããããã¯ã«ãã£ãŠéæãããŠããŸã; ã¢ãžã¥ãŒã«ã®å ±æããŒã¿ãžã®ã¢ã¯ã»ã¹ãçŽååããããã®ããã¯ãäžã€ååšããåãã³ãã©ã§ãèåŸã«ãã I/O ãžã®ã¢ã¯ã»ã¹ãçŽååããããã«ããã¯ãçæããŸãã
signal ã¢ãžã¥ãŒã«ã䜿çšããŠéåæã·ã°ãã«ãã³ãã©ãå®è£
ããŠããå Žåããã®ãããªãã³ãã©ããã¯ãã°èšé²ã䜿çšã§ããªããããããŸãããããã¯ã threading ã¢ãžã¥ãŒã«ã«ãããããã¯å®è£
ãåžžã«ãªãšã³ãã©ã³ãã§ã¯ãªãããã®ãããªã·ã°ãã«ãã³ãã©ããåŒã³åºãããšãã§ããªãããã§ãã
ã¢ãžã¥ãŒã«ã¬ãã«ã®é¢æ°Â¶
äžã§è¿°ã¹ãã¯ã©ã¹ã«å ããŠãããã€ãã®ã¢ãžã¥ãŒã«ã¬ãã«ã®é¢æ°ãååšããŸãã
- logging.getLogger(name=None)¶
æå®ãããååã®ãã¬ãŒãè¿ããŸããååã
Noneã§ããã°ããã¬ãŒã®éå±€æ§é ã«ãããã«ãŒããã¬ãŒãè¿ããŸããååãæå®ããå Žåã¯ãå žåçã«ã¯ 'a'ã 'a.b' ãŸã㯠'a.b.c.d' ã®ãããªãããåºåãã®éå±€çãªååã«ããŸããååã®ä»ãæ¹ã¯å®å šã«ãã°æ©èœã䜿ãéçºè 次第ã§ããã ãã¬ãŒãªããžã§ã¯ã ã§èšåãããŠããéããç¹ã«çç±ããªããã°__name__ã䜿ãããšãæšå¥šãããŸããäžããããååã«å¯ŸããŠããã®é¢æ°ã¯ã©ã®åŒã³åºãã§ãåããã¬ãŒã€ã³ã¹ã¿ã³ã¹ãè¿ããŸãããããã£ãŠããã¬ãŒã€ã³ã¹ã¿ã³ã¹ãã¢ããªã±ãŒã·ã§ã³ã®åéšã§ãããšãããå¿ èŠã¯ãããŸããã
- logging.getLoggerClass()¶
æšæºã®
Loggerã¯ã©ã¹ããæåŸã«setLoggerClass()ã«æž¡ããã¯ã©ã¹ãè¿ããŸãããã®é¢æ°ã¯ãæ°ããªã¯ã©ã¹å®çŸ©ã®äžã§åŒã³åºããŠãã«ã¹ã¿ãã€ãºããLoggerã¯ã©ã¹ã®ã€ã³ã¹ããŒã«ãæ¢ã«ä»ã®ã³ãŒãã§é©çšããã«ã¹ã¿ãã€ãºãåãæ¶ããªãããšãä¿èšŒããããã«äœ¿ãããããšããããŸããäŸãã°ä»¥äžã®ããã«ããŸã:class MyLogger(logging.getLoggerClass()): # ... override behaviour here
- logging.getLogRecordFactory()¶
LogRecordãçæããã®ã«äœ¿ããã callable ãè¿ããŸããAdded in version 3.2: ãã®é¢æ°ã¯ããã°ã€ãã³ãã衚çŸãã
LogRecordã®æ§ç¯æ¹æ³ã«é¢ããŠéçºè ã«ããå€ãã®ã³ã³ãããŒã«ãäžãããããsetLogRecordFactory()ãšãšãã«æäŸãããŸããããã®ãã¡ã¯ããªãã©ã®ããã«åŒã°ãããã«é¢ãã詳现ã¯
setLogRecordFactory()ãåç §ããŠãã ããã
- logging.debug(msg, *args, **kwargs)¶
ã«ãŒããã¬ãŒã®
Logger.debug()ã¡ãœãããåŒã³åºã䟿å©é¢æ°ã§ããåŒæ°ã®åãæ±ãã¯ããããç¹ã§åœè©²ã¡ãœãããšåãã§ããå¯äžã®éãã¯ã«ãŒããã¬ãŒããã³ãã©ãæããªãå Žåã§ããã®å Žåã¯ã«ãŒããã¬ãŒã®
debugã¡ãœãããåŒã³åºãåã«basicConfig()ãåŒã°ããŸããéåžžã«çãã¹ã¯ãªããã
loggingã®æ©èœã«ã€ããŠã®ç°¡åãªãã¢ã«å¯ŸããŠã¯ãdebugããã®ä»ã®ã¢ãžã¥ãŒã«ã¬ãã«é¢æ°ã¯äŸ¿å©ã§ããããããããªãããã»ãšãã©ã®ããã°ã©ã ã¯ãã®ã³ã°ã®èšå®ãæ éãã€æç€ºçã«å¶åŸ¡ãããã¯ãã§ãããããã£ãŠããã®ããã¥ã¡ã³ãã®æåã«æžãããŠãããšãããã¢ãžã¥ãŒã«ã¬ãã«ã®ãã¬ãŒãçæããŠãã®ãã¬ãŒã«å¯ŸããLogger.debug()ã¡ãœãã (ãŸãã¯ä»ã®ãã°ã¬ãã«åºæã®ã¡ãœãã) ãåŒã³åºãæ¹ã奜ãã§ãããã
- logging.info(msg, *args, **kwargs)¶
ã«ãŒããã¬ãŒã«å¯ŸããŠãã°ã¬ãã«
INFOã§ã¡ãã»ãŒãžãèšé²ããŸããåŒæ°ãšæ¯ãèãã¯ããã°ã¬ãã«ãé€ãã°debug()ãšåãã§ãã
- logging.warning(msg, *args, **kwargs)¶
ã«ãŒããã¬ãŒã«å¯ŸããŠãã°ã¬ãã«
WARNINGã§ã¡ãã»ãŒãžãèšé²ããŸããåŒæ°ãšæ¯ãèãã¯ããã°ã¬ãã«ãé€ãã°debug()ãšåãã§ããæ³šé
warningãšæ©èœçã«ç䟡ãªå€ã颿°warnããããŸããwarnã¯å»æ¢äºå®ãªã®ã§äœ¿ããªãã§ãã ãã - 代ããã«warningã䜿ã£ãŠãã ããã
- logging.error(msg, *args, **kwargs)¶
ã«ãŒããã¬ãŒã«å¯ŸããŠãã°ã¬ãã«
ERRORã§ã¡ãã»ãŒãžãèšé²ããŸããåŒæ°ãšæ¯ãèãã¯ããã°ã¬ãã«ãé€ãã°debug()ãšåãã§ãã
- logging.critical(msg, *args, **kwargs)¶
ã«ãŒããã¬ãŒã«å¯ŸããŠãã°ã¬ãã«
CRITICALã§ã¡ãã»ãŒãžãèšé²ããŸããåŒæ°ãšæ¯ãèãã¯ããã°ã¬ãã«ãé€ãã°debug()ãšåãã§ãã
- logging.exception(msg, *args, **kwargs)¶
ã«ãŒããã¬ãŒã«å¯ŸããŠãã°ã¬ãã«
ERRORã§ã¡ãã»ãŒãžãèšé²ããŸããåŒæ°ãšæ¯ãèãã¯ããã°ã¬ãã«ãé€ãã°debug()ãšåãã§ããäŸå€æ å ±ããã°ã¡ãã»ãŒãžã«è¿œå ãããŸãããã®é¢æ°ã¯äŸå€ãã³ãã©ããã®ã¿åŒã³åºãããã¹ãã§ãã
- logging.log(level, msg, *args, **kwargs)¶
ã«ãŒããã¬ãŒã«å¯Ÿã㊠level ã§æå®ãããã°ã¬ãã«ã§ã¡ãã»ãŒãžãèšé²ããŸããåŒæ°ãšæ¯ãèãã¯ããã°ã¬ãã«ãé€ãã°
debug()ãšåãã§ãã
- logging.disable(level=CRITICAL)¶
å šãŠã®ãã¬ãŒã®ã¬ãã« level ãäžæžãããããã¯ãã¬ãŒèªèº«ã®åºåã¬ãã«ãããåªå ãããŸããã¢ããªã±ãŒã·ã§ã³å šäœã暪æãããã°åºåãäžæçã«èª¿æŽããå¿ èŠãçãããããã®é¢æ°ã¯äŸ¿å©ã§ããããããã®å¹æã¯é倧床 level 以äžã®å šãŠã®ãã®ã³ã°åŒã³åºããç¡å¹ã«ããããšã§ãã®ã§ãINFO ã§åŒã³åºããããã°ãINFO ãš DEBUG ã€ãã³ããæšãŠãããäžæ¹ã§ãé倧床 WARNING 以äžã®ãã®ã¯ããã¬ãŒã®æå¹ã¬ãã«ã«åºããŠåŠçãããŸãã
logging.disable(logging.NOTSET)ãåŒã³åºããããšããã®äžæžãã¬ãã«ã¯åé€ããããã°åºåã¯åã³åã ã®ãã¬ãŒã®æå¹ã¬ãã«ã«äŸåããããã«ãªããŸããCRITICALããé«ãç¬èªã®ãã°ã¬ãã« (ããã¯æšå¥šãããŸãã) ãå®çŸ©ããå Žåã¯ã level åŒæ°ã®ããã©ã«ãå€ãåœãŠã«ã§ããªããªããé©åãªå€ãæç€ºçã«äžããå¿ èŠããããŸããããŒãžã§ã³ 3.7 ã§å€æŽ: level åŒæ°ã®ããã©ã«ãã
CRITICALã¬ãã«ã«ãªããŸããããã®å€æŽã«ã€ããŠã®ãã詳ããããšã¯ bpo-28524 ãåç §ããŠãã ããã
- logging.addLevelName(level, levelName)¶
å éšçãªèŸæžã®äžã§ã¬ãã« level ãããã¹ã levelName ã«é¢é£ä»ããŸããããã¯äŸãã°
Formatterã§ã¡ãã»ãŒãžãæžåŒåããéã®ããã«ãæ°åã®ã¬ãã«ãããã¹ã衚çŸã«å¯Ÿå¿ä»ããéã«çšããããŸãããã®é¢æ°ã¯èªäœã®ã¬ãã«ãå®çŸ©ããããã«äœ¿ãããšãã§ããŸãã䜿ãããã¬ãã«ã«å¯Ÿããå¯äžã®å¶éã¯ãã¬ãã«ã¯æ£ã®æŽæ°ã§ãªããŠã¯ãªãããã¡ãã»ãŒãžã®æ·±å»åºŠãäžããã«åŸã£ãŠã¬ãã«ã®æ°ãäžãããªããŠã¯ãªããªããšããããšã§ããæ³šé
ç¬èªã®ã¬ãã«ãå®çŸ©ãããå Žåã ã«ã¹ã¿ã ã¬ãã« ã®ã»ã¯ã·ã§ã³ãåç §ããŠãã ããã
- logging.getLevelNamesMapping()¶
ãã°ã¬ãã«ã®ååãšå¯Ÿå¿ãããã°ã¬ãã«ã®ãããã³ã°ãè¿ããŸããäŸãã°ãæåå "CRITICAL" ã¯
CRITICALã«ããããããŸãããã®é¢æ°ãè¿ããããã³ã°ãªããžã§ã¯ãã¯ã颿°åŒã³åºãã®ãã³ã«å éšã®ãããã³ã°ãã³ããŒãããã®ã§ããAdded in version 3.11.
- logging.getLevelName(level)¶
ããã¹ããŸãã¯æ°å€è¡šçŸã§ãã°ã¬ãã« level ãè¿ããŠãã ããã
level ãå®çŸ©æžã¿ã®ã¬ãã«
CRITICAL,ERROR,WARNING,INFO,DEBUGã®ããããã§ããå Žåã察å¿ããæååãè¿ãããŸããaddLevelName()ã䜿ã£ãŠã¬ãã«ã«ååãé¢é£ä»ããŠããå Žåã level ã«é¢é£ä»ããããååãè¿ãããŸããå®çŸ©æžã¿ã®ã¬ãã«ã«å¯Ÿå¿ããæ°å€ãæå®ããå Žåãã¬ãã«ã«å¯Ÿå¿ããæåå衚çŸãè¿ããŸããlevel ãã©ã¡ãŒã¿ã¯ã
INFOã®ãããªæŽæ°å®æ°ã®ä»£ããã« 'INFO' ã®ãããªã¬ãã«ã®æåå衚çŸãåãä»ããŸãããã®å Žåããã®é¢æ°ã¯é¢é£ããã¬ãã«ã®æ°å€è¡šçŸãè¿ããŸããããæž¡ãããæ°å€ãæååããããããªããã°ã 'Level %s' % level ãè¿ãããŸãã
泚é
ã¬ãã«ã¯å éšçã«ã¯æŽæ°ã§ã(ããã¯ãã®ã³ã°ã®ããžãã¯ã倧尿¯èŒãããå¿ èŠãããããã§ã)ããã®é¢æ°ã¯ãæ°å€ã®ã¬ãã«ããæžåŒèšè¿°å
%(levelname)s(LogRecord 屿§ åç §)ã«ãã£ãŠæžåŒåããããã°åºåã®è¡šç€ºçšã¬ãã«åã«å€æãããªã©ã®çšéã«äœ¿çšãããŸããããŒãžã§ã³ 3.4 ã§å€æŽ: In Python versions earlier than 3.4, this function could also be passed a text level, and would return the corresponding numeric value of the level. This undocumented behaviour was considered a mistake, and was removed in Python 3.4, but reinstated in 3.4.2 due to retain backward compatibility.
- logging.getHandlerByName(name)¶
name ã«æå®ããååã®ãã³ãã©ãè¿ããŸããæå®ããååã®ãã³ãã©ããªãå Žåã¯
Noneãè¿ããŸããAdded in version 3.12.
- logging.getHandlerNames()¶
å šãŠã®æ¢ç¥ã®ãã³ãã©åã®ãã€ãã¥ãŒã¿ãã«ãªéåãè¿ããŸãã
Added in version 3.12.
- logging.makeLogRecord(attrdict)¶
屿§ã attrdict ã§å®çŸ©ããããæ°ãã
LogRecordã€ã³ã¹ã¿ã³ã¹ãçæããŠè¿ããŸãããã®é¢æ°ã¯ã pickle ãããLogRecord屿§ã®èŸæžããœã±ãããä»ããŠéä¿¡ããå信端ã§LogRecordã€ã³ã¹ã¿ã³ã¹ãšããŠåæ§æããå Žåã«äŸ¿å©ã§ãã
- logging.basicConfig(**kwargs)¶
Does basic configuration for the logging system by creating a
StreamHandlerwith a defaultFormatterand adding it to the root logger. The functionsdebug(),info(),warning(),error()andcritical()will callbasicConfig()automatically if no handlers are defined for the root logger.ãã®é¢æ°ã¯ force ããŒã¯ãŒãåŒæ°ã«
Trueãèšå®ãããªãéããã«ãŒããã¬ãŒã«èšå®ããããã³ãã©ãããã°äœãããŸãããæ³šé
ãã®é¢æ°ã¯ãä»ã®ã¹ã¬ãããéå§ãããåã«ã¡ã€ã³ã¹ã¬ããããåŒã³åºãããã¹ãã§ããPython ã® 2.7.1 ã 3.2 以åã®ããŒãžã§ã³ã§ã¯ããã®é¢æ°ãè€æ°ã®ã¹ã¬ããããåŒã°ãããš(çããç¶æ³äžãšã¯ãã)ãã³ãã©ãã«ãŒããã¬ãŒã«è€æ°åå ããããããšãããããã°å ã®ã¡ãã»ãŒãžãéè€ãããšããäºæããªãçµæãããããããšããããŸãã
以äžã®ããŒã¯ãŒãåŒæ°ããµããŒããããŸãã
ãã©ãŒããã
説æ
filename
StreamHandlerã§ã¯ãªãæå®ãããååã§FileHandlerãäœãããŸããfilemode
filename ãæå®ãããå Žåããã® ã¢ãŒã ã§ãã¡ã€ã«ãéãããŸãã ããã©ã«ãã¯
'a'ã§ããformat
ãã³ãã©ãŒã§æå®ããããã©ãŒãããæååã䜿ããŸããããã©ã«ãã¯
levelname,name,message屿§ãã³ãã³åºåãã«ãããã®ã§ããdatefmt
æå®ãããæ¥æã®æžåŒã§
time.strftime()ãåãä»ãããã®ã䜿ããŸããstyle
format ãæå®ãããå ŽåãæžåŒæååã«ãã®ã¹ã¿ã€ã«ã仿§ããŸãã
'%','{','$'ã®ãã¡1ã€ã§ããããã printf-style,str.format(),string.Templateã«å¯Ÿå¿ããŸãã ããã©ã«ãã¯'%'ã§ããlevel
ã«ãŒããã¬ãŒã®ã¬ãã«ãæå®ããã ã¬ãã« ã«èšå®ããŸãã
stream
æå®ãããã¹ããªãŒã ã
StreamHandlerã®åæåã«äœ¿ããŸãã ãã®åŒæ°ã¯ filename ãšåæã«ã¯äœ¿ããªãããšã«æ³šæããŠãã ããã äž¡æ¹ãæå®ããããšãã«ã¯ValueErrorãéåºãããŸããhandlers
ããæå®ãããã°ã ãã㯠root ãã¬ãŒã«è¿œå ãããæ¢ã«äœããããã³ãã©ã®ã€ãã©ãã«ã«ãªããŸãããŸã ãã©ãŒããã¿ãã»ãããããŠããªããã¹ãŠã®ãã³ãã©ã¯ããã®é¢æ°ã§äœãããããã©ã«ããã©ãŒããã¿ãå²ãåœãŠãããããšã«ãªããŸãããã®åŒæ°ã¯ filename ã stream ãšäºææ§ããªãããšã«æ³šæããŠãã ãããäž¡æ¹ãååšããå Žå
ValueErrorãäžããããŸããforce
ãã®ããŒã¯ãŒãåŒæ°ãçã«èšå®ãããŠããå Žåãã«ãŒãã®ãã¬ãŒã«åãä»ãããããã³ãã©ã¯å šãŠåãé€ãããä»ã®åŒæ°ã«ãã£ãŠæå®ãããèšå®ãæå¹ã«ãªãåã«éããããŸãã
encoding
ãããã®ããŒã¯ãŒãåŒæ°ã filename ãšãšãã«æå®ãããå Žåã
FileHandlerãäœæããããšãã«ãã®å€ãå©çšãããåºåãã¡ã€ã«ãéãæã«äœ¿çšãããŸããerrors
ãããã®ããŒã¯ãŒãåŒæ°ã filename ãšãšãã«æå®ãããå Žåã
FileHandlerãäœæããããšãã®ãã®å€ã䜿çšãããåºåãã¡ã€ã«ãéãæã«äœ¿ãããŸããããæå®ãããªãã£ãå Žåã 'backslashreplace' ã䜿çšãããŸããããNoneãæå®ããããšopen()ã®ããã«æž¡ããã'errors' ãæž¡ããã®ãšåãããã«æ±ãããŸããããŒãžã§ã³ 3.2 ã§å€æŽ: style åŒæ°ã远å ãããŸããã
ããŒãžã§ã³ 3.3 ã§å€æŽ: äºææ§ã®ãªãåŒæ°ãæå®ãããç¶æ³ (äŸãã° handlers ã stream ã filename ãšäžç·ã«æå®ãããããstream ã filename ãšäžç·ã«æå®ãããå Žå) ãææããããã«ã远å ã®ãã§ãã¯ãå ããããŸããã
ããŒãžã§ã³ 3.8 ã§å€æŽ: force åŒæ°ã远å ãããŸããã
ããŒãžã§ã³ 3.9 ã§å€æŽ: encoding ãš errors åŒæ°ã远å ãããŸããã
- logging.shutdown()¶
ãã®ã³ã°ã·ã¹ãã ã«å¯ŸããŠããããã¡ã®ãã©ãã·ã¥ãè¡ãããã¹ãŠã®ãã³ãã©ãéããããšã§é 次ã·ã£ããããŠã³ãè¡ãããã«åç¥ããŸãããã®é¢æ°ã¯ã¢ããªã±ãŒã·ã§ã³ã®çµäºæã«åŒã°ããã¹ãã§ããããŸãåŒã³åºã以éã¯ãã以äžãã®ã³ã°ã·ã¹ãã ã䜿ã£ãŠã¯ãªããŸããã
loggingã¢ãžã¥ãŒã«ãã€ã³ããŒãããããšããã®é¢æ°ãçµäºãã³ãã©ãŒãšããŠç»é²ãããŸãïŒ
atexitåç §ïŒããã®ãããéåžžã¯ãããæåã§è¡ãå¿ èŠã¯ãããŸããã
- logging.setLoggerClass(klass)¶
ãã®ã³ã°ã·ã¹ãã ã«å¯ŸããŠããã¬ãŒãã€ã³ã¹ã¿ã³ã¹åããéã«ã¯ã©ã¹ klass ã䜿ãããã«æç€ºããŸãã æå®ããã¯ã©ã¹ã¯åŒæ°ãšããŠååã ãããšããããªã¡ãœãã
__init__()ãå®çŸ©ããŠããªããã°ãªããã__init__()ã§ã¯Logger.__init__()ãåŒã³åºããªããã°ãªããŸããã ãã®é¢æ°ãåŒã³åºãããã®ã¯ãããŠããç¬èªã®æ¯ãèãããããã¬ãŒã䜿ãå¿ èŠã®ããã¢ããªã±ãŒã·ã§ã³ã§ãã¬ãŒãã€ã³ã¹ã¿ã³ã¹åãããåã§ãã åŒã³åºãããåŸã¯ããã€ã§ããã®ãµãã¯ã©ã¹ã䜿ã£ãŠãã¬ãŒã®ã€ã³ã¹ã¿ã³ã¹åãããŠã¯ãããŸãã: åŒãç¶ãlogging.getLogger()API ã䜿çšããŠãã¬ãŒãååŸããŠãã ããã
- logging.setLogRecordFactory(factory)¶
LogRecordãçæããã®ã«äœ¿ããã callable ãã»ããããŸãã- ãã©ã¡ãŒã¿:
factory -- ãã°ã¬ã³ãŒããçæãããã¡ã¯ããªãšããŠæ¯èã callableã
Added in version 3.2: ãã®é¢æ°ã¯ããã°ã€ãã³ãã衚çŸãã
LogRecordã®æ§ç¯æ¹æ³ã«é¢ããŠéçºè ã«ããå€ãã®ã³ã³ãããŒã«ãäžãããããgetLogRecordFactory()ãšãšãã«æäŸãããŸããããã¡ã¯ããªã¯ä»¥äžã®ãããªã·ã°ããã£ãæã£ãŠããŸã:
factory(name, level, fn, lno, msg, args, exc_info, func=None, sinfo=None, **kwargs)- name:
ãã¬ãŒã®ååã
- level:
ãã°ã¬ãã« (æ°å€)ã
- fn:
ãã°åŒã³åºããè¡ããããã¡ã€ã«ã®ãã«ãã¹åã
- lno:
ãã°åŒã³åºããè¡ããããã¡ã€ã«ã®è¡æ°ã
- msg:
ãã°ã¡ãã»ãŒãžã
args:ãã°ã¡ãã»ãŒãžã«å¯ŸããåŒæ°ã
- exc_info:
äŸå€ã¿ãã«ãŸãã¯
Noneã- func:
ãã°åŒã³åºããèµ·åãã颿°ãŸãã¯ã¡ãœããã®ååã
- sinfo:
traceback.print_stack()ã§æäŸããããããªãåŒã³åºãéå±€ã瀺ãã¹ã¿ãã¯ãã¬ãŒã¹ããã¯ãkwargs:远å ã®ããŒã¯ãŒãåŒæ°ã
ã¢ãžã¥ãŒã«ã¬ãã«å±æ§Â¶
- logging.lastResort¶
ãæåŸã®ææ®µã®ãã³ãã©ããããã®å±æ§ã§å©çšå¯èœã§ããããã¯
StreamHandlerãsys.stderrã«WARNINGã¬ãã«ã§æžãåºããŠããã®ãããã§ããããã®ã³ã°ã®èšå®ããªã«ãäžåšã®ãã®ã³ã°ã€ãã³ããæ±ãå Žåã«äœ¿ãããŸããæçµçãªçµæã¯ãã¡ãã»ãŒãžãåã«sys.stderrã«åºåããããšã§ããããã¯ãã€ãŠãlogger XYZ ã«ã€ããŠã®ãã³ãã©ãèŠã€ãããŸããããšèšã£ãŠãããšã©ãŒã¡ãã»ãŒãžã眮ãæããŠããŸãããããäœããã®çç±ã§ãã®æã®æ¯ãèããå¿ èŠãªå Žåã¯ãlastResortã«Noneãã»ããããã°è¯ãã§ããAdded in version 3.2.
- logging.raiseExceptions¶
ãã°ã¡ãã»ãŒãžã®åŠçäžã«çºçããäŸå€ãäŒæããããã©ããã調ã¹ãããã«äœ¿ãããŸãã
ããã©ã«ã:
True.raiseExceptionsãFalseã®å ŽåãçºçããäŸå€ã¯éãã«ç¡èŠãããŸããããã¯ã»ãšãã©ã®ãã°ã·ã¹ãã ã«ãããŠæãŸããåäœã§ã - ã»ãšãã©ã®ãŠãŒã¶ãŒã¯ãã°ã·ã¹ãã ã®ãšã©ãŒã«ã¯èå³ããªããã¢ããªã±ãŒã·ã§ã³ã®ãšã©ãŒã«ãã匷ãé¢å¿ãæã€ã§ãããã
warnings ã¢ãžã¥ãŒã«ãšã®çµ±å¶
The captureWarnings() function can be used to integrate logging
with the warnings module.
- logging.captureWarnings(capture)¶
ãã®é¢æ°ã¯ãlogging ã«ããèŠåã®è£è¶³ããæå¹ã«ãŸãã¯ç¡å¹ã«ããŸãã
capture ã
Trueãªããwarningsã¢ãžã¥ãŒã«ã«çºããããèŠåã¯ããã®ã³ã°ã·ã¹ãã ã«ãªãã€ã¬ã¯ããããããã«ãªããŸããå ·äœçã«ã¯ãèŠåãwarnings.formatwarning()ã§ãã©ãŒãããåãããçµæã®æååã'py.warnings'ãšããåã®ãã¬ãŒã«ãWARNINGã®é倧床ã§ãã®ã³ã°ãããããã«ãªããŸããcapture ã
FalseãªããèŠåã®ãã®ã³ã°ã·ã¹ãã ã«å¯Ÿãããªãã€ã¬ã¯ãã¯æ¢ããããèŠåã¯å ã® (ããªãã¡ãcaptureWarnings(True)ãåŒã³åºãããåã«æå¹ã ã£ã) éä¿¡å ã«ãªãã€ã¬ã¯ããããããã«ãªããŸãã
åè
logging.configã¢ãžã¥ãŒã«logging ã¢ãžã¥ãŒã«ã®ç°å¢èšå® API ã§ãã
logging.handlersã¢ãžã¥ãŒã«logging ã¢ãžã¥ãŒã«ã«å«ãŸããã䟿å©ãªãã³ãã©ã§ãã
- PEP 282 - ãã°ã·ã¹ãã
ãã®æ©èœã Python æšæºã©ã€ãã©ãªã«å«ããããšãè¿°ã¹ãææ¡ã§ãã
- Python ã®æåã®ãã®ã³ã°ããã±ãŒãž
This is the original source for the
loggingpackage. The version of the package available from this site is suitable for use with Python 1.5.2, 2.1.x and 2.2.x, which do not include theloggingpackage in the standard library.