hyb
2026-01-30 44480e71b27aa9d4cb8441f50c873f1b110e9691
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
Ë
¸^i‘ãó¬—ddlZddlZddlZddlZddlZddlZddlmZddl    m
Z
m Z m Z m Z mZmZddlmZddlmZddlmZedd    «ZGd
„d e«Zy) éN)Ú
namedtuple)ÚAnyÚCallableÚDictÚIterableÚListÚTupleé)ÚAbstractAccessLogger)Ú BaseRequest)ÚStreamResponseÚ    KeyMethodz
key methodcóÞ‡—eZdZUdZdddddddd    d
d d d œ ZdZejd«Zejd«Z    iZ
e e e e eeffed<efdej$de ddfˆfd„ Zde de e eeffd„Zede dededede f
d„«Zede dededede f
d„«Zedededede fd„«Zedededede fd„«Zedededede fd „«Zedededede fd!„«Zededededefd"„«Z ededededefd#„«Z!edededede fd$„«Z"edededede fd%„«Z#edededede fd&„«Z$dededede%e e e&eeege fffd'„Z'e(de)fd(„«Z*dedededdfd)„Z+ˆxZ,S)*Ú AccessLoggera¬Helper object to log access.
 
    Usage:
        log = logging.getLogger("spam")
        log_format = "%a %{User-Agent}i"
        access_logger = AccessLogger(log, log_format)
        access_logger.log(request, response, time)
 
    Format:
        %%  The percent sign
        %a  Remote IP-address (IP-address of proxy if using reverse proxy)
        %t  Time when the request was started to process
        %P  The process ID of the child that serviced the request
        %r  First line of request
        %s  Response status code
        %b  Size of response in bytes, including HTTP headers
        %T  Time taken to serve the request, in seconds
        %Tf Time taken to serve the request, in seconds with floating fraction
            in .06f format
        %D  Time taken to serve the request, in microseconds
        %{FOO}i  request.headers['FOO']
        %{FOO}o  response.headers['FOO']
        %{FOO}e  os.environ['FOO']
 
    Úremote_addressÚrequest_start_timeÚ
process_idÚfirst_request_lineÚresponse_statusÚ response_sizeÚ request_timeÚrequest_time_fracÚrequest_time_microÚrequest_headerÚresponse_header) ÚaÚtÚPÚrÚsÚbÚTÚTfÚDÚiÚoz/%a %t "%r" %s %b "%{Referer}i" "%{User-Agent}i"z.%(\{([A-Za-z0-9\-_]+)\}([ioe])|[atPrsbOD]|Tf?)z(%[^s])Ú _FORMAT_CACHEÚloggerÚ
log_formatÚreturnNcóЕ—t‰|||¬«tjj    |«}|s$|j |«}|tj|<|\|_|_y)z©Initialise the logger.
 
        logger is a logger object to be used for logging.
        log_format is a string with apache compatible log format description.
 
        )r)N)ÚsuperÚ__init__rr'ÚgetÚcompile_formatÚ _log_formatÚ_methods)Úselfr(r)Ú_compiled_formatÚ    __class__s    €õbH:\项目\archive\测试组\脚本\Change_password\venv_build\Lib\site-packages\aiohttp/web_log.pyr-zAccessLogger.__init__?saø€ô    ‰Ñ˜¨JÐÔ7ä'×5Ñ5×9Ñ9¸*ÓEÐÙØ#×2Ñ2°:Ó>Ð Ø5EŒL× &Ñ & zÑ 2à*:Ñ'ˆÔ˜$-óc    ó
—t«}|jj|«D] }|ddk(r5|j|d}t    t
d|dz«}t ||«}nP|j|d|df}t    t
d|dz«}t |tj||d««}|j|«Œ¢|jjd|«}|jjd|«}||fS)aÜTranslate log_format into form usable by modulo formatting
 
        All known atoms will be replaced with %s
        Also methods for formatting of those atoms will be added to
        _methods in appropriate order
 
        For example we have log_format = "%a %t"
        This format will be translated to "%s %s"
        Also contents of _methods will be
        [self._format_a, self._format_t]
        These method will be called and results will be passed
        to translated string format.
 
        Each _format_* method receive 'args' which is list of arguments
        given to self.log
 
        Exceptions are _format_e, _format_i and _format_o methods which
        also receive key name (by functools.partial)
 
        r
Úrz
_format_%séz%sz%\1) ÚlistÚ    FORMAT_REÚfindallÚLOG_FORMAT_MAPÚgetattrrrÚ    functoolsÚpartialÚappendÚsubÚ
CLEANUP_RE)r2r)ÚmethodsÚatomÚ format_key1ÚmÚ
key_methodÚ format_key2s        r5r/zAccessLogger.compile_formatOsý€ô.“&ˆà—N‘N×*Ñ*¨:Ó6ò
    'ˆDؐA‰w˜"Š}Ø"×1Ñ1°$°q±'Ñ: ÜœL¨,¸¸a¹Ñ*@ÓAÜ& {°AÓ6‘
à#×2Ñ2°4¸±7Ñ;¸TÀ!¹WÐE ÜœL¨,¸¸a¹Ñ*@ÓAÜ& {´I×4EÑ4EÀaÈÈaÉÓ4QÓR
à N‰N˜:Õ &ð
    'ð—^‘^×'Ñ'¨¨zÓ:ˆ
Ø—_‘_×(Ñ(¨°Ó<ˆ
ؘ7Ð"Ð"r6ÚkeyÚrequestÚresponseÚtimecó@—|€y|jj|d«S)Nz (no headers)ú-©Úheadersr.©rJrKrLrMs    r5Ú    _format_izAccessLogger._format_ixs%€ð ˆ?Ø!ð‰×"Ñ" 3¨Ó,Ð,r6có:—|jj|d«S©NrOrPrRs    r5Ú    _format_ozAccessLogger._format_o‚s€ð
×Ñ×#Ñ# C¨Ó-Ð-r6có,—|€y|j}||SdSrU)Úremote)rKrLrMÚips    r5Ú    _format_azAccessLogger._format_a‰s"€à ˆ?ØØ ^‰^ˆØ^ˆrÐ,¨Ð,r6có—tjtjtj ¬««}tjj    |«}|tj|¬«z
}|j d«S)N)Úsecondsz[%d/%b/%Y:%H:%M:%S %z])ÚdatetimeÚtimezoneÚ    timedeltaÚtime_modÚnowÚstrftime)rKrLrMÚtzraÚ
start_times      r5Ú    _format_tzAccessLogger._format_tsc€ä × Ñ œx×1Ñ1¼8×;LÑ;LÐ:LÔMÓ NˆÜ×Ñ×#Ñ# BÓ'ˆØœ8×-Ñ-°dÔ;Ñ;ˆ
Ø×"Ñ"Ð#;Ó<Ð<r6có0—dtj«zS)Nz<%s>)ÚosÚgetpid©rKrLrMs   r5Ú    _format_PzAccessLogger._format_P—s€àœŸ    ™    › Ñ#Ð#r6có¨—|€ydj|j|j|jj|jj
«S)NrOz{} {} HTTP/{}.{})ÚformatÚmethodÚpath_qsÚversionÚmajorÚminorris   r5Ú    _format_rzAccessLogger._format_r›sE€à ˆ?ØØ!×(Ñ(Ø N‰NØ O‰OØ O‰O× !Ñ !Ø O‰O× !Ñ !ó    
ð    
r6có—|jS©N)Ústatusris   r5Ú    _format_szAccessLogger._format_s¦s €à‰Ðr6có—|jSrt)Ú body_lengthris   r5Ú    _format_bzAccessLogger._format_bªs€à×#Ñ#Ð#r6có*—tt|««Srt©ÚstrÚroundris   r5Ú    _format_TzAccessLogger._format_T®s€ä”5˜“;ÓÐr6có —d|zS)Nz%06f©ris   r5Ú
_format_TfzAccessLogger._format_Tf²s €à˜‰}Ðr6có0—tt|dz««S)Ni@Br{ris   r5Ú    _format_DzAccessLogger._format_D¶s€ä”5˜ ™Ó(Ó)Ð)r6c
ó`—|jDcgc]\}}|||||«f‘Œc}}Scc}}wrt)r1)r2rKrLrMrJrms      r5Ú _format_linezAccessLogger._format_lineºs0€ðKOÏ-É-×X¹;¸3À‘f˜W h°Ó5Ò6ÓXÐXùÓXs*cóT—|jjtj«S)zCheck if logger is enabled.)r(Ú isEnabledForÚloggingÚINFO)r2s r5ÚenabledzAccessLogger.enabled¿s€ð{‰{×'Ñ'¬¯ © Ó5Ð5r6có¶—    |j|||«}t«}t«}|D]O\}}|j|«|jt
ur|||<Œ/|\}    }
|j |    i«} || |
<| ||    <ŒQ|jj|jt|«z|¬«y#t$r|jjd«YywxYw)N)ÚextrazError in logging) r…r:ÚdictrAr4r|r.r(Úinfor0ÚtupleÚ    ExceptionÚ    exception) r2rKrLrMÚfmt_infoÚvaluesrŒrJÚvalueÚk1Úk2Údcts             r5ÚlogzAccessLogger.logÅsҀð    6Ø×(Ñ(¨°(¸DÓAˆHä“VˆFÜ“FˆEØ&ò     $‘
UØ— ‘ ˜eÔ$à—=‘=¤CÑ'Ø!&E˜#’Jà ‘FB˜ØŸ)™) B¨Ó+CØ#C˜‘GØ #E˜"’Ið     $ð K‰K× Ñ ˜T×-Ñ-´°f³ Ñ=ÀUÐ Õ KøÜò    6Ø K‰K× !Ñ !Ð"4Ö 5ð    6ús‚B.B1Â1$CÃC)-Ú__name__Ú
__module__Ú __qualname__Ú__doc__r=Ú
LOG_FORMATÚreÚcompiler;rCr'rr|r    rrÚ__annotations__rˆÚLoggerr-r/Ú staticmethodr r ÚfloatrSrVrZrerjrrÚintrvryr~rrƒrrr…ÚpropertyÚboolrŠr˜Ú __classcell__)r4s@r5rrsyø…ñð6Ø !Ø Ø !Ø Ø Ø Ø!Ø !Ø Ø ñ €NðC€Jؐ—
‘
ÐLÓM€Iؐ—‘˜JÓ'€JØ<>€M4˜˜U 3¨¨Y©Ð#7Ñ8Ð8Ñ9Ó>àAKñ;˜wŸ~™~ð;¸3ð;ÐPTõ;ð '#¨ð'#°°s¸DÀ¹OÐ7KÑ1Ló'#ðRð-Ø ð-Ø&ð-Ø2@ð-ØHMð-à     ò-óð-ðð.Ø ð.Ø&ð.Ø2@ð.ØHMð.à     ò.óð.ð ð-˜;ð-°.ð-Èð-ÐRUò-óð-ð ð=˜;ð=°.ð=Èð=ÐRUò=óð=ð ð$˜;ð$°.ð$Èð$ÐRUò$óð$ðð
˜;ð
°.ð
Èð
ÐRUò
óð
ðð˜;ð°.ðÈðÐRUòóððð$˜;ð$°.ð$Èð$ÐRUò$óð$ðð ˜;ð °.ð Èð ÐRUò óð ðð˜Kð°>ðÈðÐSVòóððð*˜;ð*°.ð*Èð*ÐRUò*óð*ðYØ"ðYØ.<ðYØDIðYà    %˜˜X {°NÀEÐ&JÈCÐ&OÑPÐPÑQÑ    RóYð
ð6˜ò6óð6ð
6˜;ð6°.ð6Èð6ÐRV÷6r6r)r]r?rˆrgržrMr`Ú collectionsrÚtypingrrrrrr    Úabcr Ú web_requestr Ú web_responser rrr€r6r5ú<module>r­sDðÛÛÛÛ    Û    ÛÝ"ß=×=å%Ý$Ý(á { LÓ 1€    ôG6Ð'õG6r6