Files
boc/aamos-ledger-rust/target/debug/deps/liblog-ae6d01c1b311a5f7.rlib
T

897 lines
292 KiB
Plaintext
Raw Normal View History

!<arch>
/ 0 0 0 0 3340 `
,ò(ò(ò(ò(ò(ò(ò(ò(ò(ò(ò(ò(ò(ò(ò(ò(ò(ò(ò(ò(ò(ò(ò(ò(ò(ò(ò(ò(ò(ò(ò(ò(ò(ò(ò(ò(ò(ò(ò(ò(ò(ò(ò(ò(_ZN3log10set_logger17h0d7c463b16e6568fE_ZN3log11LevelFilter10from_usize17hc7e7bf5dd495c1c3E_ZN3log11LevelFilter18decrement_severity17h5c81e0dfe598fb76E_ZN4core6option15Option$LT$T$GT$9unwrap_or17h9400fbfed7b3f7e7E_ZN3log11LevelFilter18increment_severity17hf5b48f6a25a17ea7E_ZN3log11LevelFilter4iter17hfe8aea1d26f10a4aE_ZN4core4iter6traits8iterator8Iterator3map17hb2cf1fd571fcb9c0E_ZN3log11LevelFilter6as_str17h28e9e7e8f5ab5532E_ZN3log13__private_api3loc17hc5e0ba0cf301828dE_ZN3log15set_logger_racy17h7ec773681279e002E_ZN3log5Level10from_usize17hfbb2de47978c217aE_ZN3log5Level18decrement_severity17ha4709fd59817c793E_ZN4core6option15Option$LT$T$GT$9unwrap_or17hf9098b1e0ecb04d1E_ZN3log5Level18increment_severity17h06ead67782fc6425E_ZN3log5Level4iter17hae7aa5304224a4faE_ZN4core4iter6traits8iterator8Iterator3map17h36733fb78e9a6719E_ZN3log5Level6as_str17h4e3048075be70870E_ZN3log6logger17hfbf87650c5c6f6f1E_ZN43_$LT$log..NopLogger$u20$as$u20$log..Log$GT$3log17h9700be4b18daa345E_ZN43_$LT$log..NopLogger$u20$as$u20$log..Log$GT$5flush17h13e215a234429e5eE_ZN43_$LT$log..NopLogger$u20$as$u20$log..Log$GT$7enabled17h330d8c68733f2e4fE_ZN49_$LT$log..Level$u20$as$u20$core..fmt..Display$GT$3fmt17hc06542498aa02cb4E_ZN4core3cmp5impls69_$LT$impl$u20$core..cmp..PartialEq$LT$$RF$B$GT$$u20$for$u20$$RF$A$GT$2eq17h6c6bd5fa863fdf3bE_ZN4core4iter5range101_$LT$impl$u20$core..iter..traits..iterator..Iterator$u20$for$u20$core..ops..range..Range$LT$A$GT$$GT$4next17h6b4c37b5e62d07f8E_ZN89_$LT$core..ops..range..Range$LT$T$GT$$u20$as$u20$core..iter..range..RangeIteratorImpl$GT$9spec_next17h07ccc4d673f34a4bE_ZN4core4sync6atomic11atomic_load17h24fb0b8e5ed2174bE_ZN4core4sync6atomic12atomic_store17h379a038505c987c8E_ZN4core4sync6atomic23atomic_compare_exchange17h2221c38828f4780cE_ZN54_$LT$log..MaybeStaticStr$u20$as$u20$core..cmp..Ord$GT$3cmp17h8d48398f7938c98fE_ZN55_$LT$log..LevelFilter$u20$as$u20$core..fmt..Display$GT$3fmt17h65db55a50e2f8868E_ZN57_$LT$log..Level$u20$as$u20$core..str..traits..FromStr$GT$8from_str17h706a5beb0eac3c65E_ZN63_$LT$I$u20$as$u20$core..iter..traits..collect..IntoIterator$GT$9into_iter17hae8e3d3685233fc1E_ZN58_$LT$log..SetLoggerError$u20$as$u20$core..fmt..Display$GT$3fmt17hb84eca363b16eb24E_ZN59_$LT$log..ParseLevelError$u20$as$u20$core..fmt..Display$GT$3fmt17h8c93e55bcfdf1f2fE_ZN60_$LT$log..MaybeStaticStr$u20$as$u20$core..cmp..PartialEq$GT$2eq17h8ac327224fd1766dE_ZN61_$LT$log..MaybeStaticStr$u20$as$u20$core..cmp..PartialOrd$GT$11partial_cmp17h90c3d689a84fc23cE_ZN61_$LT$log..RecordBuilder$u20$as$u20$core..default..Default$GT$7default17hf4d7f1f5a25aa78bE_ZN61_$LT$log..__private_api..GlobalLogger$u20$as$u20$log..Log$GT$3log17h82ad6e3091c206cfE_ZN61_$LT$log..__private_api..GlobalLogger$u20$as$u20$log..Log$GT$5flush17h8036d79757fa3d36E_ZN61_$LT$log..__private_api..GlobalLogger$u20$as$u20$log..Log$GT$7enabled17h358e74312e9d7041E_ZN63_$LT$log..LevelFilter$u20$as$u20$core..str..traits..FromStr$GT$8from_str17hfea08c346f8148bcE_ZN63_$LT$log..MetadataBuilder$u20$as$u20$core..default..Default$GT$7default17h2aea7c1e1d6982c4E_ZN3log20MAX_LOG_LEVEL_FILTER17h54a30f021a3ad033EDW.ref.rust_eh_personality// 56 `
log-ae6d01c1b311a5f7.log.2af095ba3ee4b928-cgu.0.rcgu.o/
lib.rmeta/ 0 0 0 644 189480 `
ELF·¨â@@GNUÀrust
à#rustc 1.96.0 (ac68faa20 2026-05-25)ÁíàÄTËŸ ÜJîÄ)'ß\¥!-3d1337db07d0b3aeÁ¤°ð ¾ä-±($²ï=©Ã-7e98a21bfd32b0edÁerrorÁ,º|»À|Ÿ|
__log_keyÁLy»kvÁtäx
__log_valueÁ\~»ºtó}
__log_value_svalÁ„°‰»kv_svalÁœ
__log_value_serdeÁŒÅŒ»kv_serdeÁ¤¡Œ
__log_value_errorÁŒø»kv_stdÁ”ÖserdeÁ,}»
serde_coreÁ´º·}»ºtž}a$Å~óµ Ì™~ܘ~®D‰óµ ÌÕ~ÜÔ~ AtomicUsizeÁ\Âóµ ÌžÜ KeyValuesÁLâí»ºt¹íset_boxed_loggerÁ„Èì»À|“ì
kv_supportÁT绺testsÁ,²£$§£íÀmacrosÁ
__logÁ
 log_enabledÁ

__log_enabledÁ
 __log_loggerÁ
¥
Æ
ç

Ç LOGGERÁSTATEÁ
UNINITIALIZEDÁ INITIALIZINGÁ INITIALIZEDÁMAX_LOG_LEVEL_FILTERÁLOG_LEVEL_NAMESÁ SET_LOGGER_ERRORÁLEVEL_PARSE_ERRORÁ!#ï
%%þ(×**maxÁ*to_level_filterÁ*as_strÁ*ù// *increment_severityÁ*decrement_severityÁ46ï
88þ;× ==²=to_levelÁ=Ò=ùBB =î=
G'aÁGgetÁ  K
MOï
Q§RT
TbuilderÁTÀTmetadataÁTlevelÁTêT¹ [ Tmodule_path_staticÁTÌ^ T file_staticÁTšb
bæ bÀb b bêb¹ b² bÌbÖ bšbbuildÁo>q
qð
q qêv
væ v vêvÀ |>LogÁ~enabledÁ~logÁ~flushÁ NopLoggerÁ
±
¿
É
ˆ¥ˆ±
ˆ¿
ˆÉ

set_max_levelÁset_max_level_racyÁ max_levelÁ
set_loggerÁ set_logger_innerÁset_logger_racyÁ××loggerÁNOPÁ
__private_apiÁ 
  KeyÁ©
ValueÁ«
sealedÁ­KVsÁ®
®into_kvsÁ±
±´
´·±
·¿
·É
log_implÁ»¿
½
½œ½±
ÁlocÁSTATIC_MAX_LEVELÁ
¿

Š
Õ
infoÁ

traceÁLevelÁËErrorÁÌ
Ì ËWarnÁÏ
ËInfoÁÑ
ËpÓ
ËTraceÁÕ
؃ÜÞÖ àï
!â"ä×#æ§çù LevelFilterÁéOffÁê
éì
é˜î
é©ð
épò
éÆô
$%÷ƒ&'(û)ýÖ*ÿï
+,ƒ×-§ùMaybeStaticStrÁˆ
ˆStaticÁŠ
ŠˆˆBorrowedÁ
ˆ.
/
0
ƒ1
×RecordÁš
š šÀš¹ šÌšš2¡
¡ƒ3¤
¤×
RecordBuilderÁ§
§recordÁ4ª
ª×MetadataÁ­
­ ­ê5±
±ƒ6´
´Ö7·
8¹
¹9¼
¼:¿
¿ï
;Â
§Äù<Æ
Æ×MetadataBuilderÁÉ
É =Ì
ÌÖ>Ï
?Ñ
Ñ@Ô
ÔA×
×ï
BÚ
Ú§ÜùCÞ
Þ×SetLoggerErrorÁá
áˆDä×ParseLevelErrorÁæ
æˆEé×FGìHîÖ GlobalLoggerÁð
ò×"
"
$
$
'
)
)
)
-
.
2
3
5
5
7
7
:
<
<
<
@
A
E
F
I
J
K
L
L
M
N
N
O
P
P
Q
R
R
W
X
Y
Z
[
]
^
`
a
e
f
g
h
i
j
k
l
m
n
o
t
u
y
z
{
|














ˆ
Š
Š
Š



Œ



˜
˜
˜
¸
¸
¸
¹
¹
¹
º
»
»
»
»
»
»
»
½
½
½
½
Á
Ù
Ý
Ý
ß
á
á
ã
ã
å
å
å
ç
ç
ø
ü
ü
þ













£
¦
¦
¦
¬
¬
¬
³

»
»
¾
¾
Á
Á
Ä
Ä
È
È
È
Î
Ó
Ó
Ö
Ö
Ù
Ù
Ü
Ü
à
à
à
å
å
å
ê
ê
ê
í
í
ï
ó
ó
ó
ÛËÌÍÎÏИÑÒ©ÓÔpÕÖÆIöËsX ÑØ·$Š ·$Ðì·$µß·$·$·$íß·$·$º·$¿c·$še·$µß·$éêëÒìíîï˜ðñ©òópôõÆ7¦ÏZl3ÿíß·$Ž&ïy·$Äc·$ÛŽ&ØŽ&Š Ž&ÐìŽ&µßŽ&Ž&Ž&íߎ&Ž&ºŽ&¿cŽ&šeŽ&µßŽ&·$íߎ&·$ïyŽ&ÄcŽ&Š ˆŠ§ŒˆŽÂˆ! 2Jj1÷
ÛË(ØË(¿cË(ˆŠ§ŒˆŽÂˆ! 2Jj1÷8µßÂ)Â)ºÂ)íßÂ)Â)šeÂ)Øššžœ Àž¹ ŸÌ šV!(…×»
¿cÊ*¿c§§ƒ© îå!rÐÎ
³§§ƒ© îå!rÐÎ8Ø­­Á¯ °ê’î Ì/A
­,Ðì­,µß­,­,º­,íß­,­,še­,¿c­,ÉÉˆË =e¤ÉÉ­
ÐìÁ-µßÁ-Á-ºÁ-íßÁ-Á-šeÁ-¿cÁ-³ÉÉˆË =e¤ÉÉ­8~ƒÕ
 #©-üïø9h~ 8¥¿cááâºãˆ a#˜‘OMbüÄc·/¿cææçèèˆ ã9^P$)Ðìù/µßù/ù/ù/Äcù/® 
 
ç0
®
¿cððñ´ ð|©!Ã~1×ËöéˆØË÷鈡š±­ÚËùéˆÛËúé·­ÏÉëæÜË!Ëûé4éKˆ¹­ÑÉìæÞËýéJˆ´­ÌÉîæàË#Ëÿé6éOˆ¿­×ÉâËéMˆ¼­ÔÉäËƒéˆ¤šª§Æ­ÞÉäáéæòðæËéQˆÂ­ÚÉ%Ë8é(Ë;éáæo§|Ɉ
·ð±
´
ÛÕØŠ #Ðìµß#5íß)º.¿c
"šeFïy"Äc ³~ ®ï5ï5ï5ï5(‰ŽŽŽÙ$·$/ ·$9BLH–ŽŸŽÝ=BHSý6Zý6aï5hï5ox¹
 __self_discrÁž __arg1_discrÁµ½£Žß¡Ž€1ý6)P¥Ž&49
ïßï5ï5NS[¯Žásx~Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ¿ßÀßÁßLessÁÂßÃßÄß~Å߯ßÇßGreaterÁÈßåºÝÈnûê7/ý67ý6?ï5Gï5O ï5Z<bl¹
zµ7ˆÌ7û9§±Ž&49
»ï5JOW´Žãotz‰;ý6ý6ï5ï5¢<©<°¹¹
Ƶ7ÓÌ7Þæ®=ï (¶Ž)/7 ºŽPX¨?ks¨?:ލ?U¡©¨?p¾Ã
êcÔÙỎåùÖ¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
€1ŸÈŸÈ È éBL{ý6ƒ  c cˆ¢cµ
 `£cbufÁ `àB¤GS
ʨ?Òï5Úä±òý³@ ½Ž"
›eï5ù9>FÁŽç^c€1oý6v ­Cï5<Žº¤µ7±¹¤CÂ,³•t³•4Å•|Å•ü³•!Ú•"üÿ”[$¤•ý6,…• Ž&,Œ•·$Œï5Ž&~ï55¹
5d,í–„ì–
4ƒ—
Œ‚— 

  üì–(ý–®=s-¼ý–üç–. Û¼‰;›—$ü™– Ä:¬Ç–ý6,¨–ÆE,¯–‰;‘<êï5ñ·$ï5<½ï5ÜŽ&òï5ùW¹
Zˆ®=êd¾ž ËО,üžž2·$,®ž,ñŸtñŸüÙŸ'¼ÙŸ
>(!üÙŸ04 
±TŽ&DD  -ü¢ŸmŽ&\ßý6,¹ŸÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙŽ&Í·$òï5ùf÷I÷žJ՜ȥ„È¥
+ Ù¥#äÈ¥4Ü¥
±T·$EDÜ¥ä¥1üÄ¥ ·$Ç¥ 1ï5·$€11ï5 Å¥Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ·$í´YÿK
¨Lç(¡´¦´ø$Ž&/ÆE6?IH®´·´ü=BHSÆEZÆEaï5hï5ox¹
µ7Ì7¥»´þ¹´€1ÆE)P½´&49û9DIQÇ´intÄ:ÆEÆEŽï5ï5œ<£<ª³¹
Àµ7ÍÌ7Øàû9éÉ´&49®=DIQÌ´int‰;ÆEÆEŽï5ï5œ<£<ª³¹
Àµ7ÍÌ7Øà®=é
(δ+19¨?Ò´PX¨?ks¨?:ލ?U¡©¨?p¼Ä¨?ÙÞ³@êï ÷Ó´ë@ÆE#òA+¨?3ï5;E±S^³@h Õ´"¤C-2: Ù´RW€1cÆEj÷Cqï5x<ˆºµ7¢ª¤C³t«¸±¸
·ß·$Ž&,«¸$´¸D±¸¿¸5üý·B$œ¸ÆE,ƒ¸ý6,Џ¹
EŽYš,̹„˹
4â¹
Œá¹ 

 ”๠ü˹(ܹ®=s-¼Ü¹üƹ. Û¼‰;ú¹7üþ¸| Ä:¬¦¹ÆE,¹ý6,”¹‰;‘<éï5ðŽ&ï5<¼ï5Û·$ñï5øW¹
Z®=锕 é­Â?üïÁ>Ž&\ÿÁ,øÃtøÃüæÃ!ŒæÃÿK&Ä@ü´ÃY”MlÎÃÆE,ÄÃŽ&vï5}=ÿK{œÛÉ„ÛÉ÷I ìÉ!äÛÉ4ïÉžJ=DïÉ÷ÉDü×É Ž&ÚÉ DòLøLŽ&€1/ï5 ØÉëJž´T÷I»žJ("à×"å×$)/ˆŠ§ŒˆŽÂˆ! 2Jj1÷ ù`£(#ç×#8#°ØÂ¨?D L¨?- 9
 ¿c~ƒ
‡d 
u¦`#”ا¨?Åͨ?-9âbõúüb h#ì×39@ ë@MËaUòA]e ¨?ƨ?wâbÕ ÝdßÝdg¨?˜âbwöd²±À__self_0Á,¿d¹ëödâbÎübýödâb[üb ,–Ù\Ù% ïÙ¨? õÙ ÁÙ§¨? ÇÙüÙq‡ÚIüíØšôªÙüÖÙ ¨?<þØËa,ôب?XÕd̪Ù¨?¨?Ð+¾¾ñxT»ÞÀÞ
I$»Þ,ÀÞ´»Þ$ÆÞ
›eO,ËÞ\ÆÞØÞRüýÝ[€1°ÞËa,›Þ …i,¢Þ€1z¨?¯'º'WÏhØýh¯°$±ê­­Á¯ °ê’î Ì/ANS
Ù¹jdlÀ$ÍêäÈäÈ ArgumentsÁæÈtemplateÁ `çÈÀ `üöMõô]Tdej
Ù©k{ƒø$ëê'Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙù`]b
Ù±ls{ø$˜ë ±l…m (0ˆ$¾ë Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ\a
Ùãm r
z($†ê š
$‹ê£: ššžœ Àž¹ ŸÌ šV!(…×» ‘o§¹jÖ ¹já©ky ©k±l ±l±l¨p¡ãmu ãm ÿjI†lß…m^…må·n·(%ê ¨?°%±ê  ¨?¹j'âbÀ%Íê 
¨? ©k' âbø%ëê'

 ¨? ±l(  âbø%˜ë

 ¨?±l(âbˆ%¾ë 
¨?ãm'3âb9?
d QWGM"
ñ ö
ÃÈš%’ꦯë@»ðoÃòA˨?Ó¨?ÅâbÍ‚pÕ¨?¦âb®•p¨?âb¨p¨?gâbo¨pw¨?GâbO ËpZËpb`±nypâbo•pâb@¨pâb¨pâbáÜuâb±Ús«¤ÿð”ÿð
d™ñVüÏðJ§§ƒ© îå!rÐÎŒãðEÞvTûñ©k‹òWüÇñD•pœÝñðo,Óñ /tûò¹jóXüÉòF‚plãòðo,Ùò /löó¹j¬öó,„ô
t0<„ô‘ôYüÏóB·$,æóðo,Üó‚pt6Èyzl€õ¹j´€õ4Žõ
u0DŽõœõZüÖôF¨?<îôðo,äôpt6ãzzö±lüö! ö
·Tù`¨?\ù`¨?€1OŠ|\¤ö„ ö¶ö[üØõ^Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ¨?|õõðo,ëõ±lä{þ{ë ¨ö<¨öªöÏh',ªö¯ö\û¨?§öŠ|ù` ¥öËao¾6Ïh|„Ø÷±l´Ò÷$´ø Û¼¨?H±lÛù`O “ø±lÛù`§¨?<šø Û¼¨?  øÉøü÷º]ü÷÷*à|¤³÷ðo,©÷ÕdÌü÷Õdü÷÷¨?«(¾ÁnL½ù±lÔ½ùÇù
·Tù`¨?_|”|€1Dã÷\Ëù„ÇùÝù^üùPà||£ùðo,™ù±l6ëŸ Ïù<ÏùÑùÏh',ÑùÖù_·¨?Îù÷Íù` ÌùËao¾òÏh{L€û±l|úú$Õû Û¼¨?H±lÛù`O ´û±lÛù`§¨?<»û Û¼¨? Áûêûü¾ú¬`ü˜û*à|¤Ûúðo,ÑúÕdÌûÕdü˜û¨?«(¾ÁnLÓüãmâüaü§ü;ãm\½üðo,³ü /(&­ 
¨? ¨?o'3âb[`
ùcqvejˆ¬ ë@« wµòA¼¨?è?´âb» ðoÅðoÌë±øŸ‰âbù°ˆ€'Á’€dÁ’
¶cÎ’¨? 0œí’Œí’
s"Üí’,
{J<$§“ Û¼ù`$Ó Û¼ù`$ß“ Û¼¨nü¢’½ šüþ‘ì §ð”düÒ‘ž wŒâ‘‘on©kL¹jî ÉÉˆË =e¤ÉÉ­TÇŒ]±l ±lüãm뀊»´ŠŒãŠc¼‘o©k$°–º–eüº• w´î•†ŽLÆ•©k$Ñ•ÀKü¸˜‘o¹j$á˜ë˜füá—Š†Ž´—˜†ŽLñ—¹jDü— Iüš"o¹j·$$¹šÚgüÙ†Ž´ì™†ŽLЙ·$,Û™ Iüê›$‘o¹j¨?$˜œ¢œhüœ›†Ž´É›†ŽLª›¨?4µ›êIüì"ñ
·T¨?ù`
ŽÄõª’ ìñüÒ<o±l$˜ž¢žiüùœ©†Ž´±†Žà|$—±l°õ
 Pž’ÚüŽ  “ 
·T¨?ù`
$Ž ´— ‘” Ü“ üôŸ:‘o±l$¸  jüŸ³†Ž´ÓŸ†ŽL©Ÿà|$´Ÿ±l°õ
 P…”Úüð¡"õ¡ž’$ð¡Äù¡ª’ ìõ¡üÝ¡5‘o±l$œ¢¦¢kü‹¡†Ž´¼¡†ŽL—¡à|$¢¡±l Ì Pž’Êü÷£ ü£…”$÷£´€¤‘” Üü£üä£3‘o±l$¡¤«¤lü†£¥†Ž´Ã£†ŽL™£à|$¤£±l Ì P…”ʼ¥‘oãm$ã¥í¥müô¤y†Ž´¡¥†ŽL€¥ãm$‹¥šH\㨑oœã¨,ï¨
Ùo2<ï¨ü¨nü·¨E‘oTΨùˆ,Ĩðow7»š~`(×±·$
Ù·$-5x(鱨?((„± ­(‰±³1¹j<pC·$¤ý6«¨?yÝdhrÕ›Ö
Ù¨?¨)±)‹± €1p"+5`*×±·$·$(-
·ß·$·$BGOUx*鱨?¨?(-
·ß¨?¨?BGOS[g*˜±»H*±p‚pý6ý6Ýd¼ÝdÃJ¹
WaªžPŸô`+×±·$·$(-
»·$>CKO[i+â±x+鱨?¨?(-
»¨?>CK+±¾+š±í ‰;pp#‰;ý6ý6&Ýd­Ýd´Z¹
gX}Œ¡k¢ñ`,×±·$·$(-
ïß·$·$BGOS_o,â±Û‰;x,鱨? ¨?(-
ïߨ?¨?B GO,©±P,Ÿ±Á#
Ä:$p+p2Ä:Eý6Mý6U]ÕdeÝdÂÝdÉq¹
~‰¤ª´¥`-×±·$
›e·$ù3 -«±Dx-鱨?
›e¨?¾§1F>-¯±Äf€1q‚px ¾§ƒ€1Âý6ÉÝdˆ¡º®¸µ§úý§¸(.±± ¨?`.×± ¨?·$'âbx.é± ¨?
¨?' 
3 âb
ûc¨­œ¡otÉ.¶±Èá ë@ì‚póòAú¨?¨?óâbúý6¨?ÒâbÙödàÝdç=±KVý6âbLödâb¼ªq´ø²¤ø²
x”³süƲNÇŒœÚ²¯¬XTû³·$‹´tüÔ³7·$,볂p,á³ /\ú´¨?‹µuüд;¨?<è´p,Þ´ //ŹÎ/ù €1ÅŒ&0°0–º¹j¹j(-
·ß¹j¹jBGO0йÓH0ǹŌŌ‚pŒ‚p5¹
BL̯½°1–º¹j¹j(-
»¹j>CK1Õ¹Ö1Ò¹‰;ŌŌ‚p‚p6¹
CM”±º°2–º¹j¹j(-
ïß¹j¹jBGO2á¹ÙP2×¹Ä:ŌŌ‚p‚p6¹
CMÙ²¾°3–º¹j
›e¹j¾§1 3ã¹B3ç¹Ü$€1/ÅŒ7Ȩ?p|Oº\f‘´¦(4é¹ ¨?°4–º  ¨?¹j'3âb[`°ˆmraf4î¹àœë@§ÅŒ¯òA¨?½¨?®âbµ ‚p¿‚pÆå±òüð¶âbò°ˆ\ð¼ Ë•½ ¨?üμX ­ü¦¼ É·½xüø»¿ÇŒœˆ¼¹je·$¨?ˆ0ÌÖ¾¹j·$$ù¾ƒ¿yüŒ¾w ÇŒij¾°¹L™¾·$¤¾argÁNìªÀ¹j¨?$ÑÀÛÀzüÚ¿°¹ćÀ°¹L迨?4ó¿êIlÂÁ¹j¬ÂÁ,ÐÁÿj,<ÐÁÝÁ{ü”ÁI¹jd«ÁÅŒ,¡Á‚pq7ÿjwDÔÎÔÔÎ<ÝÎ
©/,DåÎŒÝÎôΊü›ÎY$ÅÎ  ©/,¦Î‚pD­Î•½ !Sɼ¢D£Ï¤£Ï¬Ï
©/-4°Ï\¬Ï¾ÏüúÎD€1˜Ï“½,Ïðo4ˆÏ€1t•½% (V‡¾¦DÝÏ„ÝÏ,æÏ
©/-<æÏôÏŒüÃÏ1€1ÒÏ“½,ÌÏ€1b•½?É¿¤Ó×  ¤]¤]V¦]Á‚]üß3ø¤”&ï5tî׌þ× ¼ÀüÓ×=,è×
—ĈD<üè×(“Øü¤×o€1Ì׎&,¹×€1káÀàï5,î×¼À½À¾ÀË¿ÀÀÀÌÁÀÂÀGÃÀÄÀFÅÀÆÀ×`šÁ¬S øB š½ÉÁ¤žà áÀt¹àŒÉà ¼Àüžà=,³àÉÁVA9ü³à(ÞàŽüñÝí€1¥ÞŽ&,’Þ€1iáÀ¯ï5,¹à¹Âš .RÉÁ¡¤Ñè áÀŒëè ¼ÀüÑè,$æè
–ÄL7¼æèüÂè< Ž&‚éüñäŽ&\‡åï5náÀ§¹Â1ÿÅ(>Ç‹ ¨?>é‹€1!âbINübZ_Nl>Ì‹åë@ ·/òA ¨?§âb˜  €1¥¼È­Ì±ÙãºÈâbÙübô(?Ü ¨?€1!âbINübZ_Nlêë@ ù/òA ¨?§âb˜ºÈ ¼È¨Ç±ÔÞºÈâbÔübï€1€1(-
·ß€1€1BGOíH@ãšÊšÊ¼È¼È7¹
DN³Ë¿ï €1šÊ&0 Û¼ 
¨?¨?ܳüŠRÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ¯ÍüŸ"¯Í$– t Û¼¯ÍØüŒLÝÍü¡"€1$˜ ~)€14(Bš  ¨?³@(-5óLë@W 1aòAh¨?ox±³@˜
¨?
¨?Ó
 •½•½LocationÁ—½filenameÁ¯V˜½š¯V™½colÁ¯Vš½ _filenameÁ¯VirBð¸tý–Ð 
  
£T¯Í
+  , ùFž"#ùiž"#€Šüï NL¨? /ùE@#áE#
ÜW Q $ŒÜ  
V
 
Üô $…

e)
T…
üô 1,™

gI
d™
üô I

hJ

ŒÚ
 Û¼¨?üô x”Ç

jd: üÇ
%T‡$
ÉV
4‹„‚ Û¼¨?üô Ÿ

l; ìö

ËV§ „¢ Û¼¨nüô ¿$
m;
´<€
|€,ˆ
n(<ˆ„ÿäôû
r2¬û üí ¦»ü§ ìüÊ É€1¦ Ø4†
©k$•
·$
 ¨?¨?˜Ñܼ
ÝÍ ¨?u¨?k˜ÑbÑ ÝÍís©k°w †Ž†Ž†Ž†Žë†Ž%†Ž^†Žxà|ßà|q¨?£ãm ¨n=€1| ØÝðo ‘oÏùˆèÊÀ kvsÁê¹  ð
ÿ
µ¯Ò€ŠÑ¥Ó£ËÓüÓU­Ô,ÞÔ©Õ¾ØÕ ÖVÎÖ-–×îàש—ØyØMØT
&
°œÄüáx 
»,‘Ô |U Ø
Ûü•Æ,<½2 €1¸¨Þ©k·$ºÙÔåãݯ¨ÞSÝÍ)§ÊJÀN Rtarget_module_path_and_locÁoÝÚsêÝÝ¢Þt¨Þ" œ¹Œ¹´Š 
 ü¹ 
y
F ü¹/
z J/ü¹7ãŠTü¸8ü©H
Øý1ü°A òóüÝÁ Ø·$,ÿ¨?4ŠÛ‚p¸¹jäÅŒ*°¹3°¹m°¹£ÇŒ¬Êb fêj¬´ŠåÒῃâãŠ^÷â/ØØ °GÙœ
øNÇ    øHÿœ' „ª é'øIÉ) ”ö é'øJ—ž( J¾žŒÃž é'øKãž( 
KŠŸŒŸ é'øL¯Ÿ)  Lן”ÜŸ é'øMýŸ) 
M¥ ”ª  é',ôŸNå  „ê  é' øO…¡!


O¥¡
”ª¡ é'
øPÇ¡    Pæ¡ Œë¡ é' øQ‡¢    Q¦¢ Œ«¢ é' øRÇ¢!


Rç¢
”ì¢ é'
”‰£ é £ü©œöÄŽ&\Åœe oÊw$Ñ~tù¦S4Ø ˆ(ù`3¨?:AD§Ø ˆŽ(ù`3¨?:AÌÏ‹ áâ&·/1€18?Ôó æç&ù/1€18?
 ~‚ƒŽÄË­šéˆ§ÉáâæçíÀ…|â”|¬FromStrÁ<Ï|ïyâ|×ç| `íì|ë Ë,™ ×\²k élâr
ýd´v¥LÑ|Æ\é‡ç„劌ýÇŒ­‘å\ö}„Ä®Dƒ~¼À¿
ªÅŠ,þ(ÆÕ$º4ÇÖ$ÕAÈ,ÁMÉè,Š[ÊüÓüÓ! A lightweight logging facade.ÁõúüùIF The `log` crate provides a single logging API that abstracts over theÁüÃMJ actual logging implementation. Libraries can use the logging API providedÁü‘MJ by this crate, and the consumer of those libraries can choose the loggingÁüß:7 implementation that is most suitable for its use case.ÁšúüžOL If no logging implementation is selected, the facade falls back to a "noop"ÁüîKH implementation that ignores all log messages. The overhead in this caseÁüº>; is very small - just an integer load, comparison and jump.ÁùúüýPM A log request consists of a _target_, a _level_, and a _body_. A target is aÁüÎPM string which defaults to the module path of the location of the log request,ÁüŸ OL though that default may be overridden. Logger implementations typically useÁüï C@ the target to filter requests based on some user configuration.Á³
ú
 # UsageÁÃ
úüÇ
RO The basic use of the log crate is through the five logging macros: [`error!`],Áüš 30 [`warn!`], [`info!`], [`debug!`] and [`trace!`]ÁüÎ ?< where `error!` represents the highest-priority log messagesÁüŽ IF and `trace!` the lowest. The log messages are filtered by configuringÁüØ <9 the log level to exclude messages with a lower priority.Áü•
IF Each of these macros accept format strings similarly to [`println!`].Áß
úã
úüç
" [`error!`]: ./macro.error.htmlÁüŠ  [`warn!`]: ./macro.warn.htmlÁü«  [`info!`]: ./macro.info.htmlÁüÌ" [`debug!`]: ./macro.debug.htmlÁüï" [`trace!`]: ./macro.trace.htmlÁü’IF [`println!`]: https://doc.rust-lang.org/stable/std/macro.println.htmlÁÜúüà]Z Avoid writing expressions with side-effects in log statements. They may not be evaluated.Á¾úœÂ ## In librariesÁÖúüÚGD Libraries should link only to the `log` crate, and use the providedÁü¢NK macros to log whatever information will be useful to downstream consumers.Áñú„õ
### ExamplesÁú ```Áü’.+ # #[derive(Debug)] pub struct Yak(String);ÁüÁ1. # impl Yak { fn shave(&mut self, _: u32) {} }Áüó52 # fn find_a_razor() -> Result<u32, u32> { Ok(1) }ÁÔ© use log::{info, warn};ÁÄúüÈ)& pub fn shave_the_yak(yak: &mut Yak) {ÁüòJG info!(target: "yak_events", "Commencing yak shaving for {yak:?}");Á½ú loop {ÁüÐ" match find_a_razor() {Áôó Ok(razor) => {Áü’41 info!("Razor located: {razor}");ÁüÇ%" yak.shave(razor);ÁÔí break;ÁŒˆìš Err(err) => {Áü¸GD warn!("Unable to locate a razor: {err}, retrying");ÁŒ€Êl’
L ”° # fn main() {}ÁÅ…Ëú¬Ï ## In executablesÁåúüéUR Executables should choose a logging implementation and initialize it early in theÁü¿LI runtime of the program. Logging implementations will typically include aÁüŒ:7 function to do this. Any log messages generated beforeÁüÇ63 the implementation is initialized will be ignored.Áþúü‚A> The executable itself may use the `log` crate to log as well.ÁÄú ### WarningÁØúüÜ41 The logging system may only be initialized once.ÁúÌ• ## Structured loggingÁ¯úü³FC If you enable the `kv` feature you can associate structured valuesÁüúMJ with your log records. If we take the example from before, we can includeÁüÈDA some additional context besides what's in the formatted message:Áú<‘Å…Ü™ # use serde::Serialize;Áüµ96 # #[derive(Debug, Serialize)] pub struct Yak(String);Áüï1ކü¡@= # fn find_a_razor() -> Result<u32, std::io::Error> { Ok(1) }Áüâ" # #[cfg(feature = "kv_serde")]ÁŒ… # fn main() {ÁÔ—‡‡²úü¶)·‡üàIF info!(target: "yak_events", yak:serde; "Commencing yak shaving");Áª úɈü½ "áˆôà Œ‰üÿ 2/ info!(razor; "Razor located");Áü²!%ò‰ÔØ! ŠŒó!ÊÜ…" Err(e) => {Áü¡"GD warn!(e:err; "Unable to locate a razor, retrying");ÁŒé"Êlû"á‹L‰#÷‹,“#‰Œ<™# # }Áü¡#'$ # #[cfg(not(feature = "kv_serde"))]Á”É#—Œ<Ü#Å…ä#úüè#96 See the [`kv`] module documentation for more details.Á¢$úü¦$'$ # Available logging implementationsÁÎ$úüÒ$:7 In order to produce log output executables have to useÁü%74 a logger implementation compatible with the facade.ÁüÅ%<9 There are many available implementations to choose from,Áü‚&+( here are some of the most popular ones:Á®&úì²& * Simple minimal loggers:Á´Ð& * [env_logger]ÁŒç& * [colog]ÁÌù& * [simple_logger]Á¬“' * [simplelog]Áì©' * [pretty_env_logger]Á¬Ç' * [stderrlog]ÁÄÝ' * [flexi_logger]Á¼ö' * [call_logger]Á´Ž( * [std-logger]Áì¥( * [structured-logger]Á¬Ã( * [clang_log]ÁŒÙ( * [ftail]Áüë(&# * Complex configurable frameworks:Á”’) * [log4rs]Á¤¥) * [logforth]Á„º)
* [fern]Á¬Ë) * [spdlog-rs]Áüá)$! * Adaptors for other facilities:Á”†* * [syslog]Á¼™* * [slog-stdlog]Áü±*" * [systemd-journal-logger]Á¼Ô* * [android_log]ÁÔì* * [win_dbg_logger]Á¬‡+ * [db_logger]ÁÄ+ * [log-to-defmt]ÁÔ¶+ * [logcontrol-log]ÁüÑ+ * For WebAssembly binaries:Á¼ñ+ * [console_log]Áä‰, * For dynamic libraries:Áü¦,b_ * You may need to construct an FFI-safe wrapper over `log` to initialize in your librariesÁ„‰-
* Utilities:Áœš- * [log_err]Á´®- * [log-reload]ÁäÅ- * [alterable_logger]Áâ-úÜæ- # Implementing a LoggerÁ.úü†.PM Loggers implement the [`Log`] trait. Here's a very basic example that simplyÁü×.KH logs all messages at the [`Error`][level_link], [`Warn`][level_link] orÁü£/*' [`Info`][level_link] levels to stdout:ÁÎ/ú<Ò/Å…üÚ/'$ use log::{Record, Level, Metadata};Á0úĆ0 struct SimpleLogger;ÁŸ0úü£0$! impl log::Log for SimpleLogger {ÁüÈ085 fn enabled(&self, metadata: &Metadata) -> bool {Áü1+( metadata.level() <= Level::InfoÁL­1÷‹·1úü»1(% fn log(&self, record: &Record) {Áüä10-
 ~‚ƒŽÄË­šéˆ§ÉáâæçíC<ÀD<âC<¬­ñ<<ïy;<×:< `í9<ë Ë8< ×7< é6<
ý5<¥4<Æ3<ç1</<Ç-<å+<„Ä®*<¼À¿
)<ÅŠ(<ÆÕ'<ÇÖ&<È%<Éè$<ʼ=¿=Â=Äð{¹=D|®=ŒÅ|š=Ü|Ž===„=t=w=T€}4„}”Œ(|ü™= Ÿ ´%  Š8Ê4—& , Ÿ8Ê4 & ¦8$ «8ê4­& ³, µ8ê& ¼8$ Á, Ã8lvlÁÄ& Ç8$ Ì, Î Ï ú
, Ð8keyÁÑ& Ô8¯Õ, Ø Ù æ& Ú, Û8captureÁ& ã8¯ä- ç, é ê ø ë, í8»& ó8- ù$ û ü% ý, ÿ  ˆ, 8ã¸& 8¯ *Œ  ü   û 8š8ºîž ¢, ¤8ºî¥% ¨8²8ºîµ¹, ¼8'Â8ª„ÄÕ8ºîØÜ, ß8'å8× ð ñ ó õ , 8,'8âl‰'8¿
˜  ê , ­8Ê$ ´, Æ8'Ì8â'Û8ë è é ò, ê ë ð, ì8ã¸í ñ$ ó8ºî$ ˆ š  è, œ8ê4$ £, ¥8'«8âl­'º8¹  Ç È É$ Ê, Ì8'Ò8â'á8 ã æ ç$ é û ü Ó , ý þ Ð  ÿ Ï 
, 8, '8¥Lˆ    , 8üî$ ˜ , š 8, '  8Æ ­  ®  Î  , ¯ 8üî° , ´  µ  ¿ & , · 8¾ï<¸ 
À  Â , Ä  Å  Ì , Æ 8»
Í $ Ñ  Ò 8Õ  Ø  Ù  Û 8 Ú $ Ü % ë % ý  Û! ž"8Ê4Ü!& â!, ä!8Ê4å!& ë!8$ì!$ ð!8ê4ò!& ø!, ú!8ê4û!& "8$"$ †", ˆ"8ºî‰"& Œ"8$"$ ", “" ”" œ", •"8ã¸"& ™"8¯š" "* " £" ±% ¤" °%8®"8ºî²" ¶", ¸"8ºî¹"% ¼"8Æ"8ºîÉ"Í", Ð"8,Ñ"'Ö"8ª„Ø"é"8ºîì"ð", ó"8,ô"'ù"8×Lû" „# …# ‡# ª%, •#8,#'#8âl#'ª#8¿
¬# ¯# Ÿ%, Á#8Ê4Â#$ È#, Ú#8,Û#'à#8âlâ#'ï#8ë\ñ# ü# ý# †$, þ# ÿ# „$, €$8ã¸$ …$$ ‡$8ºî™$$ œ$ ®$ ¯$ ü$, °$8ê4±$$ ·$, ¹$8,º$'¿$8âlÁ$'Î$8¹ \Ð$ Û$ Ü$ Ý$$ Þ$, à$8,á$'æ$8âlè$'õ$8 ÷$ ú$ û$$ ý$ % %$ %%  %% ²%Ä¥kü‚cMJ Determines if a message logged at the specified level in that module willÁtÐc be logged.ÁßcúüãcOL This can be used to avoid expensive computation of log message arguments ifÁü³d(% the message would be ignored anyway.ÁÜdútàd # ExamplesÁïdú<ódÅ…üûd)& use log::{debug, log_enabled, Level};Á¥eúü©e$! # struct Data { x: u32, y: u32 }ÁüÎe96 # fn expensive_call() -> Data { Data { x: 0, y: 0 } }Áüˆf74 # let my_logger = log::__private_api::GlobalLogger;ÁüÀf# if log_enabled!(Level::Debug) {Áüäf$! let data = expensive_call();Áü‰g>; debug!("expensive debug data: {} {}", data.x, data.y);Á,Èg‰ŒÎgúüÒg52 if log_enabled!(target: "Global", Level::Debug) {Áüˆh# let data = expensive_call();Áü¬hOL debug!(target: "Global", "expensive debug data: {} {}", data.x, data.y);Á,üh‰Œ‚iúü†i63 if log_enabled!(logger: my_logger, Level::Debug) {Áü½i#˜‡üáiOŇ,±j‰Œ<·jÅ…¿júüÃjQN This macro accepts the same `target` and `logger` arguments as [`macro@log`].Á(|•kÿK ¾k ³r l Ãl8Ê4Žl& ”l, l8Ê4—l& l8$žl$ ¢l8ê4¤l& ªl, ¬l8ê4­l& ³l8$´l$ ¸l, ºl8ºî»l& ¾l8$¿l*Ål Èl ®m Él ­m, Ól8,Ôl'Ùl8élÛl èl él §m8Ê4êl& ðl, òl8,ól'øl8ýdúl †m ‡m m, ˆm8Ê4‰m$ m8ê4m& ˜m, šm8ê4m$ ¡m, £m8ºî¤m% ¯m êm Šn 8Ê4ëm& ñm, óm8Ê4ôm& úm8$ûm$ ÿm, n8ºîn& …n8$†n*Œn n “o n o, šn8,n' n
L"üÞ•&·$$ïß$ü™–C\œ–ö÷ ö·$ ÷Ž&Ä:# ¨–#
$$©–¹
‚#´Ÿ—·$&'ðyñy'D¼—Á—%%ù/üÜ—4Dß—ø øÖ¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
·$·$ðy% ï—%
' ,è—ܬš·$)Åc)üΚ6Ñšùúû ù·$ ú c cˆ¢cµ
 `£c“A `àB¤GS
ûë@( Õš(
)$Öš×ÜšT¯›·$+,-./23üÀ›(TÛï5”M**ÿKÀ Λ¬žžüà+( Returns the most verbose logging level.Á¥ž·$**
,ü¢Ÿ,üÖž96 Converts the `Level` to the equivalent `LevelFilter`.Á|©Ÿü ü·$Ž&* ¹Ÿ*
-$ºŸü¢¡$ü• 52 Returns the string representation of the `Level`.ÁÏ úü× FC This returns the same string as the `fmt::Display` implementation.Á4©¡ý ý·$å«* °¡*
.$±¡üƒ¥+üü¡1. Iterate through all supported logging levels.Á²¢úüº¢KH The order of iteration is from more severe to less severe log messages.ÁŠ£út’£û‚¥£ú<­£Å…œ¹£ use log::Level;ÁÑ£úüÙ£# let mut levels = Level::iter();Á¤úü‰¤2/ assert_eq!(Some(Level::Error), levels.next());ÁüÀ¤2/ assert_eq!(Some(Level::Trace), levels.last());Á<÷¤Å…$Š¥0**
/ÐZ”¥//â­â­MapÁå­ùæ­±Å@Iœóë ¶¥££¹ƒ£¹„£þ-'ºˆÉ¬gï5íLÍìš¼œùM𼬙¥š¼úM·$\¢¥½ÆÑ½"â½/Ä¥/<closure_kind>Á1<closure_signature>Á1<upvars>Á11/íLü±ª(üñ¥/, Get the next-highest `Level` from this one.Á¥¦úü­¦`] If the current `Level` is at the highest level, the returned `Level` will be the same as theÁ„’§
current one.Á§§út¯§û‚§ú<ʧÅ…œÖ§¹î§úäö§ let level = Level::Info;Á—¨úüŸ¨96 assert_eq!(Level::Debug, level.increment_severity());ÁüݨNK assert_eq!(Level::Trace, level.increment_severity().increment_severity());Áü°©pm assert_eq!(Level::Trace, level.increment_severity().increment_severity().increment_severity()); // max levelÁ<¥ªÅ…”¸ªþ þ·$·$* ˪*
2$̪ü°(üÄ«.+ Get the next-lowest `Level` from this one.Á÷«úüÿ«_\ If the current `Level` is at the lowest level, the returned `Level` will be the same as theÁ„㬽¿ø¬út€­û‚“­ú<›­Å…œ§­¹¿­úäÇ­¨Àè­úüð­85 assert_eq!(Level::Warn, level.decrement_severity());Áü­®NK assert_eq!(Level::Error, level.decrement_severity().decrement_severity());Áü€¯pm assert_eq!(Level::Error, level.decrement_severity().decrement_severity().decrement_severity()); // min levelÁ<õ¯Å…”ˆ°ÿ ÿ·$·$* ›°*
3$œ°ü÷%Ž&5·ß5üý·#€¸ Ž& ·$4 ƒ¸4
5$„¸¹
l,üø&Ž&7ïß7üþ¸=\¹ƒ Ž& ƒ·$Ä:6 ¹6
7$޹¹
Š-äþ¹Ž&9:ðyñy:D¡º¦º88ù/üÁº:Dĺ Ö¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
Ž&Ž&ðy8 Ôº8
: ,ͺü½!Ž&<Åc<üŽ6Ƚ Ž&  c cˆ¢cµ
 `£c“A `àB¤GS
ë@; ̽;
<$ͽ×Ó½„¦¾Ž&>?@ABEFü½¾.TÀ¾ï5ëJ==÷IÀ ˾ÜïÁüªÁ2/ Returns the most verbose logging level filter.ÁöÁŽ&==
?ü´Ã'ü³Â.+ Converts `self` to the equivalent `Level`.ÁæÂúüîÂ30 Returns `None` if `self` is `LevelFilter::Off`.ÁD»Ãˆ ˆŽ&”M= ÄÃ=
@$ÅÃü¦Å$ü“Ä;8 Returns the string representation of the `LevelFilter`.ÁÓÄúüÛÄF£¶4­Å Ž&å«= ´Å=
A$µÅü–É+ü€Æ30 Iterate through all supported filtering levels.Á¸ÆúüÀÆB? The order of iteration is from less to more verbose filtering.Á‡ÇútÇû‚¢Çú<ªÇÅ…̶Ç use log::LevelFilter;ÁÔÇúüÜÇ)& let mut levels = LevelFilter::iter();ÁŠÈúü’È63 assert_eq!(Some(LevelFilter::Off), levels.next());ÁüÍÈ85 assert_eq!(Some(LevelFilter::Trace), levels.last());Á<ŠÉÅ…$ÉC==
BÐb§ÉBBâ­â­лå­ùæ­±Å@Iœóë ¶¥„½ì_Íì€ØcùM€Ø¬¬É€ØúMŽ&\µÉïØþØ"ÙB×ÉB¨½DÀ½DݽDDBì_üÏ(ü„Ê52 Get the next-highest `LevelFilter` from this one.Á¾ÊúüÆÊ`] If the current `LevelFilter` is at the highest level, the returned `LevelFilter` will be theÁä«Ë same as the current one.ÁÌËútÔËû‚çËú<ïËÅ…ÌûËíÔ™Ìúü¡Ì)& let level_filter = LevelFilter::Info;ÁÏÌúü×ÌFC assert_eq!(LevelFilter::Debug, level_filter.increment_severity());Áü¢Í[X assert_eq!(LevelFilter::Trace, level_filter.increment_severity().increment_severity());Áü‚Î}z assert_eq!(LevelFilter::Trace, level_filter.increment_severity().increment_severity().increment_severity()); // max levelÁ<„ÏÅ…”—ÏŠ ŠŽ&Ž&= ªÏ=
E$«Ïü²Ö(ü£Ð41 Get the next-lowest `LevelFilter` from this one.ÁÜÐúüäÐ_\ If the current `LevelFilter` is at the lowest level, the returned `LevelFilter` will be theÁäÈÑÊÚéÑútñÑû‚„Òú<ŒÒÅ…̘ÒíÔ¶Òúü¾Ò)ÂÛìÒúüôÒEB assert_eq!(LevelFilter::Warn, level_filter.decrement_severity());Áü¾Ó[X assert_eq!(LevelFilter::Error, level_filter.decrement_severity().decrement_severity());ÁüžÔnk assert_eq!(LevelFilter::Off, level_filter.decrement_severity().decrement_severity().decrement_severity());Áü‘Õ assert_eq!(LevelFilter::Off, level_filter.decrement_severity().decrement_severity().decrement_severity().decrement_severity()); // min levelÁ<¦ÖÅ…”¹Ö Ž&Ž&= ÌÖ=
F$ÍÖܽØ
HHË(IÂØÄíØðØŒ ŒË(ç0G ôØG
I
$õØô‹Ú8Â)ü®Ú%8ŽŽÂ)L·ßLüÚÚ"ÝÚ Â) Â)K àÚK
L8$áÚ¹
,çÚüªÛ8Â)N»NüÐÛ2ÓÛ Â) Â)‰;M ×ÛM
N8$ØÛ¹
,ÞÛü²Ü&8Â)PïßPüßÜB\âÜ Â) Â)Ä:O îÜO
P8$ïܹ
,õÜüËÝ+8Â)R›eRüýÝ3$€Þ˜ ˜Â) …i€1QSS ›ÞQÍì…i …Þ¢e…iŒˆÞ
R8…i$œÞº]402œˆð
UUÊ*VWXYZ[]^`aðüÏð%Ô¢ð Returns a new builder.Á<Öðº+TT
V
üÇñ)¬Ÿñ The message body.Á$Îñš šÊ* šäÈäȵjæÈÈj `çÈÀ `üöMõô]Td
T ÓñT
W
$ÔñüÉò'ü‘ò%" Metadata about the log directive.ÁDÐò Ê* ­,T ÙòT
X
$ÚòäÏóü•ó'$ The verbosity level of the message.Á,Öóœ œÊ*·$T ÜóT
Y
$ÝóüÖôü—ô,) The name of the target of the directive.Á4Ýô Ê*ç0T äôT
Z
$åôüØõ,ü¢õ# The module path of the message.Á\ßõž žÊ*Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙç0T ëõT
[
$ìõ¤ö[¨½\À½\ݽ\\[Š|ü÷8ü¼ö@= The module path of the message, if it is a `'static` string.Á”–÷Ÿ ŸÊ*Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙå«T ©÷T
]
$ª÷üù%üÏø+( The source file containing the message.Á$”ù   Ê*°ôT ™ùT
^
$šùËù^¨½_À½_ݽ__^÷ü¾ú1üãùHE The source file containing the message, if it is a `'static` string.Á\Åú¡ ¡Ê*åöT ÑúT
`
$Òúü§ü!üðû$! The line containing the message.Á$®ü¢ ¢Ê*ãmT ³üT
a
$´üÔï
ccº+defghijklmnôüÒ‘!üŽ" Construct new `RecordBuilder`.Á·Žú俎 The default options are:ÁàŽúüèŽ" - `args`: [`format_args!("")`]Áü1. - `metadata`: [`Metadata::builder().build()`]ÁÜÅ - `module_path`: `None`Á¤å - `file`: `None`Á¤þ - `line`: `None`ÁúüŸNK [`format_args!("")`]: https://doc.rust-lang.org/std/macro.format_args.htmlÁüòMJ [`Metadata::builder().build()`]: struct.MetadataBuilder.html#method.buildÁÙ‘º+bb
d
üº•Jüö”1. Set [`args`](struct.Record.html#method.args).Á$Á•£ £º+²ï¸b Æ•b
e
$Ë•À¡Füá—LüÀ–Ž Set [`metadata`](struct.Record.html#method.metadata). Construct a `Metadata` object with [`MetadataBuilder`](struct.MetadataBuilder.html).ÁDè—¤ ¤º+­,¹ƒb ñ—b
f
$ö— 1GüÙ?üñ˜?< Set [`Metadata::level`](struct.Metadata.html#method.level).Á,Ê™¥ ¥º+·$è„b Йb
g
$Õ™ ÅGüœ›CüÉš@= Set [`Metadata::target`](struct.Metadata.html#method.target)Á4£›¦ ¦º+ç0˜†b ª›b
h
$¯›êYHüùœNü¨œ>; Set [`module_path`](struct.Record.html#method.module_path)Á\€§ §º+°ôƇb Œb
i
$õ
3IüŸZü¨žTQ Set [`module_path`](struct.Record.html#method.module_path) to a `'static` stringÁ”–Ÿ¨ ¨º+åö‹‰b ©Ÿb
j
$®Ÿõ
Jü‹¡GüÈ 0- Set [`file`](struct.Record.html#method.file)Á$’¡© ©º+°ô¬Šb —¡b
k
$œ¡ÌñJü†£Sü¬¢GD Set [`file`](struct.Record.html#method.file) to a `'static` string.Á\£ª ªº+åöä‹b ™£b
l
$ž£ÌÈKüô¤Cü±¤0- Set [`line`](struct.Record.html#method.line)Á$û¤« «º+ãm…b €¥b
m
$…¥šcLü·¨!üø§,) Invoke the builder and return a `Record`Á,¾¨¬ ¬º+Ê*b Ĩb
n
$Ũü€©"8­­ô+p´p¤©©<¬©ô+oo
p8¬ý±
rr­,stu‚²üƲ'Ô™²‡í<ͲÁ-qq
s
äÔ³üš³'Âð,Û³® ®­,·$q á³q
t
$â³üдü‘´,Ïñ4×´¯ ¯­,ç0q Þ´q
u
$ߴ䱺
wwÁ-xyz{¶ºüø»#üÔº&# Construct a new `MetadataBuilder`.Áÿºú䇻îû¨»úä°» - `level`: `Level::Info`Á¤Ñ» - `target`: `""`Áÿ»Á-vv
x
üŒ¾?ü½½<9 Setter for [`level`](struct.Metadata.html#method.level).Á,“¾° °Á-·$ô”v ™¾v
y
$ž¾ã¸L\üÚ¿Eü‰¿>; Setter for [`target`](struct.Metadata.html#method.target).Á4῱ ±Á-ç0£–v è¿v
z
$í¿êÞ\ü”Á#üáÀ  Returns a `Metadata` object.Á,›Á² ²Á-­,v ¡Áv
{
$¢ÁüáÁ$8³³À.}´}¤ŒÂ<ÂÀ.||
}8ÔÿÂüÀÂ>; A trait encapsulating the operations required of a logger.Á‰Ã~~Îìüÿ ½™$ŽÃÌì½™$•Ã~µ™=Ê™0Û™$µ™OÊ™BÛ™6üÆÇ/ü ÃDA Determines if a log message with the specified metadata would beÁ\éà logged.ÁùÃúüÄFC This is used by the `log_enabled!` macro to allow callers to avoidÁüÌÄJG expensive computation of log message arguments if the message would beÁ¬›Å discarded anyway.ÁµÅú´½Å # For implementorsÁØÅúüàÅ@= This method isn't called automatically by the `log!` macros.Áü¥ÆPM It's up to an implementation of the `Log` trait to call `enabled` in its ownÁüúÆGD `log` method implementation to guarantee that filtering is applied.Á<ÉÇ´µ ´½™ µ­­Á¯ °ê’î Ì/A~ ÑÇ~
½™$ÒÇ DØÇüéÉ´ûÇ Logs the `Record`.Á–Èú´žÈŒœ¹ÈúüÁÈGD Note that `enabled` is *not* necessarily called before this method.ÁüÉC@ Implementations of `log` should perform all necessary filteringÁ|ÕÉ internally.ÁìÉ·¸¹ ·½™ ¸ššžœ Àž¹ ŸÌ šV!(…×»¹€1~ ðÉ~
½™$ñÉ 4÷É„€ÌüŽÊ! Flushes any buffered records.Á´Êú´¼ÊŒœ×ÊúüßÊ@ºœü¤ËWT It can be called manually on shut-down to ensure any in-flight records are flushed.Á,ƒÌº º½™€1~ ‰Ì~
½™$ŠÌ„ºÌLÁÌø.#©-üïø9hƒ/*ø.´ÍÌø.…üêÌ'<íÌ»¼½ »ø. ¼­­Á¯ °ê’î Ì/A½ õÌ
$öÌ üÌ̭Ͱ;¿À ¾ø. ¿ššžœ Àž¹ ŸÌ šV!(…×»À€1 ´Í
$µÍ »Í|ÎÍ,ÑÍÁ Áø.€1 ×Í
$ØÍüäÍ08Â¥ÂÎì©/ éÍ~©/Τ/ŠŒŠŒ79ü›Î.<žÎÃÄŠä/ Ä­­Á¯ °ê’î Ì/Aň ¦Îˆ
Š8©/$§Î &^ôúÎýÎÆÇÈ Æ¤/ Çššžœ Àž¹ ŸÌ šV!(…׻Ȁ1ˆ ψ
8©/$‚Ï á^|ÃÏ,ÆÏÉ É¤/€1ˆ Ìψ
Œ8©/$ÍÏü¤×(ü‡Õ&# Sets the global maximum log level.Á®Õúü²ÕOL Generally, this should only be called by the active logging implementation.Á‚Öúü†Öqn Note that `Trace` is the maximum level, because it provides the maximum amount of detail in the emitted logs.Áóµ ̈×ü‚×!l«×Ž&€1
 ™`üñÝ4ü•Ø1. A thread-unsafe version of [`set_max_level`].ÁÇØúüËØLI This function is available on all platforms, even those that do not haveÁü˜Ù<9 support for atomics that is needed by [`set_max_level`].ÁÕÙúüÙÙ?< In almost all cases, [`set_max_level`] should be preferred.Á™ÚúdÚ # SafetyÁªÚúü®ÚIF This function is only safe to call when it cannot race with any otherÁüøÚ52 calls to `set_max_level` or `set_max_level_racy`.Á®Ûúü²ÛMJ This can be upheld by (for example
 `£c“A `àB¤GS
Ìë@ ¡Œ
$¢Œ×¨Œü”%ù/˜Åc˜üÀ6ÃÍÎÏ Íù/ Πc cˆ¢cµ
 `£c“A `àB¤GS
Ïë@ Ç
˜×Îü#üœ’&# Returns a reference to the logger.ÁÃ’úüÇ’EB If a logger has not been set, a no-op implementation is returned.Á4”“ø©
¬Ì—Ó—ø.€¬—™ü\Y WARNING: this is not part of the crate's public API and is subject to change at any timeÁ4Ž™lŸ™©«­»½ÁÃðñîp®œÊ4 žô,‰ËŸ§
~ ÁD•­¡žš¢µjL¶äÈ£¦Ð•½¤ëž¦¹ \ö«§Ô¨¨Œbâ,yÓÕÂı³¡£’œ¬ƒ¤ÅrãbdSUDF„¬»º„™Üµ
ªªç0¹”仺„ÑÜÈ
¬¬ç0ó4‡®Œ¹Ã®
¯®¯µ™ü¹h®µ™µ™°°°ÇüÕF½™Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ 
 
‚á®®
°½™
üÆ/
²²Þ0³°³ËüŠ7DÞ0Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙÞ0±±
³
±f¼à
µµ€1¶°åüŒ7D€1‡â´´

g̼¹º¹¸ºüÜ.ÐÑÒ Ð1 Ñ­­Á¯ °ê’î Ì/AÒ· ç·
¸ ô»¾ÓÔÕ Ó1 Ôššžœ Àž¹ ŸÌ šV!(…×»Õ€1· ·
¹ |„ ,‡ Ö Ö1€1· ·
ºüí ¹×ØÙÚÛÜÝØäÈäȵjæÈÈj `çÈÀ `üöMõô]Td×·$ Ø Ùå« •½•½¦Ð—½¸Ð¯V˜½š¯V™½ÚЯVš½êЯVirBð¸tý–ÚÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ Û
 Ü Ý€1¼¼L›
ÍìØ ù ~Øü 
»ØÊ"lÀ+l 4lÝÚQl:<ü•ÅœÞßàá¨ÞäÈäȵjæÈÈj `çÈÀ `üöMõô]TdÞ·$ ß àå« •½•½¦Ð—½¸Ð¯V˜½š¯V™½ÚЯVš½êЯVirBð¸tý–áãÝ€1
¾œ¿ÀÀ¿¾ÍìãÝ ¤Íì¨Þ §®ãÝ
~¨ÞÖ
½
ãݨÞÊ?oÀHo Qo®ß[oÝÚeo xztvüÝEâØ·$ â ë ì’ëï
ÁØÊkq tqê}q*,ü…*²|õŒ •½•½¦Ð—½¸Ð¯V˜½š¯V™½ÚЯVš½êЯVirBð¸tý–
Ãü©œ'ü¯™.+ The statically resolved maximum log level.ÁÞ™úüâ™OL See the crate level documentation for information on how to configure this.Á²šúü¶šPM This value is checked by the log macros, but not by the `Log`ger returned byÁü‡›MJ the [`logger`] function. Code that manually calls functions on that valueÁüÕ›0- should compare the level against this value.Á†œúôŠœ [`logger`]: fn.logger.htmlÁ„³œŽ&„üØ The standard logging macro.ÁøúüüLI This macro will generically log with the specified `Level` and `format!`ÁÄÉ based argument list.ÁâúÅ…Ôî use log::{log, Level};Áúü! let data = (42, "Forty-two");Áü¯! let private_data = "private";ÁÑúüÕB? log!(Level::Error, "Received errors: {}, {}", data.0, data.1);Á<˜Å… úü¤OL Optionally, you can specify a `target` argument to attach a specific targetÁüôOL to the log record. By default, the target is the module path of the caller.ÁÄúÅ…ÔГöëúüï!Ãöü‘!îö³ú log!(ÁìÁ target: "app_events",Á¬ß Level::Error,Áüõ" "Received errors: {}, {}",Á´˜  data.0, data.1Á );ÁÅ…¾ úü PM And optionally, you can specify a `logger` argument to use a specific loggerÁü“
)& instead of the default global logger.Á½
ú
Å…ÄÉ
 # struct MyLogger {}Áìâ
 # impl Log for MyLogger {Áü€ @= # fn enabled(&self, _metadata: &log::Metadata) -> bool {ÁœÁ  # falseÁ  # }Áüá 1. # fn log(&self, _record: &log::Record) {}Áä“  # fn flush(&self) {}Á û˜ü¸  use log::{log, Level, Log};ÁØ úüÜ !Ãöüþ !îö 
úü¤
 let my_logger = MyLogger {};Á
•úÔÏ
 logger: my_logger,Á¬ê
Íúü€"ìú´£—û¶ûÅ…ÉúüÍTQ The `logger` argument accepts a value that implements the `Log` trait. The valueÁü¢&# will be borrowed within the macro.ÁÉúüÍUR Note that the global level set via Cargo features or through `set_max_level` willÁü£RO still apply, even when a custom logger is supplied with the `logger` argument.Á뜈´†(|öµy ® ê  Î8Ê& , 8Ê4•& 8$  8ê& ¨, ª8ê& ±8$ , ¸8ºî¹& ¼8$ Á, Ã Ä Ì, Å8ã¸Æ& É8¯Ê Í*Ð Ó õ Ô ô, Þ8'ä8Ë ë ì î8Ê& , 8'ˆ8ý   Ÿ, ˜8Ê4™$  8ê& ´, 8ê$ ½, Ë8ºîÌ$ Ï, Ý Þ ã, ß8ã¸à ä% ö ¸ å8Ê& ¿, Á8Ê& È8$ Í, Ï8ºîÐ& Ó8$ Ø, Ú Û ã, Ü8ã¸Ý& à8¯á ä*ç ê ª ë ©, õ8'û8Ë  ƒ £8Ê4& , 8'Ÿ8ý ­ ® , ¯8Ê$ ·8ê& Ë, Í8'Ó8â'â8¹  ï ð ñ$ ò, 8ºî$ ,   ˜, 8㸠% « ï œ8ê& ö, ø8ê& ÿ8$€$ , 8ºî& Š8$$ ,   š, 8ã¸& 8¯˜ *ž ¡ Ï ¢ Î, ¬8,­'²8Ë,´ ¹ º È8Ê& Î, Ð8'Ö8ý ä å ù8œæ$ ú8ê4ˆ& Ž, 8ê4$ , ¥8ºî¦$ ©, · ¸ ½, ¹8㸺 ¾% Ð ÿ , 8ºî& 8$…$ ,  Œ , 8㸎& 8¯ *˜  ç œ æ, ¦8'¬8Ë ³ ´ à8Ê& È, Ê8'Ð8ý Þ ß ó8œà$ ô8ê4& ˆ, Š8,'8âl'Ÿ8¹  ¬ ­ ®$ ¯, ½8ºî¾$ Á, Ï Ð Õ, Ñ8ã¸Ò Ö% è”ñ(ü·%&# Logs a message at the error level.ÁÞ%útâ%û‚ñ%ú<õ%Å…œý% use log::error;Á&úü•&7Ü„üÍ&1. let (err_info, port) = ("No connection", 22);Áÿ&úüƒ'/, error!("Error: {err_info} on port {port}");Áü³'HE error!(target: "app_events", "App Error: {err_info}, Port: {port}");Áüü'EB error!(logger: my_logger, "App Error: {err_info}, Port: {port}");Á<Â(Å…ëœÜ(´Ú((|Ê(Åy „) ó0 ¸* ð*8Ê4¹*& ¿*, Á*8Ê4Â*& È*8$É*$ Í*8ê4Ï*& Õ*, ×*8ê4Ø*& Þ*8$ß*$ ã*, å* æ* î*, ç*8ã¸è*& ë*8¯ì* ï**ò* õ* ë+ ö* ê+, €+8,+'†+8¿
ˆ+ + Œ+ ä+8Ê4+& “+, •+8,+'+8ýd+ ©+ ª+ ²+, «+8Ê4¬+$ ³+8ê4µ+& »+, ½+8ê4¾+$ Ä+, Æ+8,Ç+'Ì+8ô,Î+'Ó+8,Õ+$ Ú+, Ü+ Ý+ â+, Þ+8ã¸ß+ ã+% ì+ ÷, ™-
8Ê4ø,& þ,, €-8Ê4-& ‡-8$ˆ-$ Œ-, Ž- - —-, -8ã¸-& ”-8¯•- ˜-*›- ž- ƒ. Ÿ- ., ©-8,ª-'¯-8¿
±- ´- µ- ü-8Ê4¶-& ¼-, ¾-8,¿-'Ä-8ýdÆ- Ò- Ó- Û-, Ô-8Ê4Õ-$ Ü-, Þ-8,ß-'ä-8ô,æ-'ë-8,í-$ ò-, ô- õ- ú-, ö-8ã¸÷- û-% „. “/ µ/
8ê4”/& š/, œ/8ê4/& £/8$¤/$ ¨/, ª/ «/ ³/, ¬/8㸭/& °/8¯±/ ´/*·/ º/ ˆ0 »/ ‡0, Å/8,Æ/'Ë/8¿
Í/ Ð/ Ñ/ 08ê4Ò/& Ø/, Ú/8ê4Û/$ á/, ã/8,ä/'é/8ô,ë/'ð/8,ò/$ ÷/, ù/ ú/ ÿ/, û/8ã¸ü/ €0% ‰0 ³0 ¿0, ´0 µ0 ½0, ¶08㸷0& º08¯»0 ¾0*Á0 Ä0 ñ0, Å08,Æ0'Ë08¿
Í0 Ð0 Ñ0 ð0
, Ò08,Ó0'Ø08ô,Ú0'ß08,á0$ æ0, è0 é0 î0, ê08ã¸ë0 ï0Œ­4üö0%" Logs a message at the warn level.Áœ1út 1û‚¯1ú<³1Å…”»1 use log::warn;ÁÎ1úüÒ17Ü„üŠ2+( let warn_description = "Invalid Input";Á¶2úüº2*' warn!("Warning! {warn_description}!");Áüå2NK warn!(target: "input_events", "App received warning: {warn_description}");Áü´3IF warn!(logger: my_logger, "App received warning: {warn_description}");Á<þ3Ņ뜘4´–4(|†4Õy ¿4 £< ñ5 ©68Ê4ò5& ø5, ú58Ê4û5& 68$6$ †68ê4ˆ6& Ž6, 68ê46& —68$˜6$ œ6, ž6 Ÿ6 §6,  68㸡6& ¤68¯¥6 ¨6*«6 ®6 £7 ¯6 ¢7, ¹68,º6'¿68¿
Á6 Ä6 Å6 œ78Ê4Æ6& Ì6, Î68,Ï6'Ô68ýdÖ6 â6 ã6 ë6, ä68Ê4å6$ ì68ê4î6& ô6, ö68ê4÷6$ ý6, ÿ68,€7'…78ô,‡7'Œ78˜$Ž7$ 7, ”7 •7 š7, –78㸗7 7% ¤7 ­8 Ï8
8Ê4®8& ´8, ¶88Ê4·8& ½88$¾8$ Â8, Ä8 Å8 Í8, Æ88ã¸Ç8& Ê88¯Ë8 Î8*Ñ8 Ô8 ¸9 Õ8 ·9, ß88,à8'å88¿
ç8 ê8 ë8 ±98Ê4ì8& ò8, ô88,õ8'ú88ýdü8 ˆ9 ‰9 9, Š98Ê49$ 9, ”98,•9'š98ô,œ9'¡98˜$£9$ §9, ©9 ª9 ¯9, «98㸬9 °9% ¹9 Æ: è:
8ê4Ç:& Í:, Ï:8ê4Ð:& Ö:8$×:$ Û:, Ý: Þ: æ:, ß:8ã¸à:& ã:8¯ä: ç:*ê: í: º; î: ¹;, ø:8,ù:'þ:8¿
€; ƒ; „; ³;8ê4…;& ;, ;8ê4Ž;$ ”;, ;8,—;'œ;8ô,ž;'£;8˜$¥;$ ©;, «; ¬; ±;, ­;8㸮; ²;% »; ä; ð;, å; æ; î;, ç;8ã¸è;& ë;8¯ì; ï;*ò; õ; ¡<, ö;8,÷;'ü;8¿
þ; < <  <
, ƒ<8,„<'‰<8ô,<'<8˜$<$ <, ˜< ™< ž<, š<8ã¸< Ÿ<ŒÈAü¦<%" Logs a message at the info level.ÁÌ<útÐ<û‚ß<ú<ã<Å…”ë< use log::info;Áþ<úü‚=7Ü„üº=1. # struct Connection { port: u32, speed: f32 }Áüì=96 let conn_info = Connection { port: 40, speed: 3.20 };Á¦>úüª>NK info!("Connected to port {} at {} Mb/s", conn_info.port, conn_info.speed);ÁTù> info!(Áü„?$! target: "connection_events",Áü©?52 "Successful connection, port: {}, speed: {}",Áüß?'$ conn_info.port, conn_info.speedÁ4‡@¶ûTŽ@¼¸Ô™@Æ€ü´@5þ¸üê@'½¹4A¶û<™AŅ뜳A´±A(|¡Aåy ÚA ¾I ŒC ÄC8Ê4C& “C, •C8Ê4C& œC8$C$ ¡C8ê4£C& ©C, «C8ê4¬C& ²C8$³C$ ·C, ¹C ºC ÂC, »C8㸼C& ¿C8¯ÀC ÃC*ÆC ÉC ¾D ÊC ½D, ÔC8,ÕC'ÚC8¿
ÜC ßC àC ·D8Ê4áC& çC, éC8,êC'ïC8ýdñC ýC þC †D, ÿC8Ê4€D$ ‡D8ê4‰D& D, D8ê4D$ ˜D, šD8,D' D8ô,¢D'§D8©$©D$ ­D, ¯D °D µD, ±D8㸲D ¶D% ¿D ÈE êE
8Ê4ÉE& ÏE, ÑE8Ê4ÒE& ØE8$ÙE$ ÝE, ßE àE èE, áE8ã¸âE& åE8¯æE éE*ìE ïE ÓF ðE ÒF, úE8,ûE'€F8¿
F …F †F ÌF8Ê4‡F& F, F8,F'•F8ýd—F £F ¤F ¬F, ¥F8Ê4¦F$ ­F, ¯F8,°F'µF8ô,·F'¼F8©$¾F$ ÂF, ÄF ÅF ÊF, ÆF8ã¸ÇF ËF% ÔF áG ƒH
8ê4âG& èG, êG8ê4ëG& ñG8$òG$ öG, øG ùG H, úG8ã¸ûG& þG8¯ÿG H*…H ˆH ÕH ‰H ÔH, “H8,”H'™H8¿
H žH ŸH ÎH8ê4 H& ¦H, ¨H8ê4©H$ ¯H, ±H8,²H'·H8ô,¹H'¾H8©$ÀH$ ÄH, ÆH ÇH ÌH, ÈH8ã¸ÉH ÍH% ÖH ÿH I, €I I ‰I, I8㸃I& †I8¯‡I ŠI*I I ¼I, I8,I'—I8¿
™I œI I »I
, žI8,ŸI'¤I8ô,¦I'«I8©$­I$ ±I, ³I ´I ¹I, µI8㸶I ºI”´MüÁI&# Logs a message at the debug level.ÁèIútìIû‚ûIú<ÿIÅ…œ‡J use log::debug;ÁJúüŸJ7Ü„ü×J(% # struct Position { x: f32, y: f32 }Áü€K/, let pos = Position { x: 3.234, y: -1.223 };Á°Kúü´K74 debug!("New position: x: {}, y: {}", pos.x, pos.y);ÁüìKMJ debug!(target: "app_events", "New position: x: {}, y: {}", pos.x, pos.y);ÁüºLJG debug!(logger: my_logger, "New position: x: {}, y: {}", pos.x, pos.y);Á<…MŅ뜟M´M(|Mõy ÇM ¶U ûN ³O8Ê4üN& O, „O8Ê4…O& O8$ŒO$ O8ê4O& ˜O, šO8ê4O& ¡O8$¢O$ ¦O, ¨O ©O ±O, ªO8㸫O& ®O8¯¯O ²O*µO ¸O ®P ¹O ­P, ÃO8,ÄO'ÉO8¿
ËO ÎO ÏO §P8Ê4ÐO& ÖO, ØO8,ÙO'ÞO8ýdàO ìO íO õO, îO8Ê4ïO$ öO8ê4øO& þO, €P8ê4P$ ‡P, ‰P8,ŠP'P8ô,P'P8p,˜P$ P, ŸP  P ¥P, ¡P8㸢P ¦P% ¯P ºQ ÜQ
8Ê4»Q& ÁQ, ÃQ8Ê4ÄQ& ÊQ8$ËQ$ ÏQ, ÑQ ÒQ ÚQ, ÓQ8ã¸ÔQ& ×Q8¯ØQ ÛQ*ÞQ áQ ÆR âQ ÅR, ìQ8,íQ'òQ8¿
ôQ ÷Q øQ ¿R8Ê4ùQ& ÿQ, R8,R'‡R8ýd‰R •R R žR, —R8Ê4˜R$ ŸR, ¡R8,¢R'§R8ô,©R'®R8p,°R$ µR, ·R ¸R ½R, ¹R8㸺R ¾R% ÇR ÖS øS
8ê4×S& ÝS, ßS8ê4àS& æS8$çS$ ëS, íS îS öS, ïS8ã¸ðS& óS8¯ôS ÷S*úS ýS ËT þS ÊT, ˆT8,‰T'ŽT8¿
T “T ”T ÄT8ê4•T& T, T8ê4žT$ ¤T, ¦T8,§T'¬T8ô,®T'³T8p,µT$ ºT, ¼T ½T ÂT, ¾T8㸿T ÃT% ÌT öT U, ÷T øT €U, ùT8ã¸úT& ýT8¯þT U*„U ‡U ´U, ˆU8,‰U'ŽU8¿
U “U ”U ³U
, •U8,U'U8ô,U'¢U8p,¤U$ ©U, «U ¬U ±U, ­U8㸮U ²U”ýZü¹U&# Logs a message at the trace level.ÁàUútäUû‚óUú<÷UÅ…œÿU use log::trace;Á“Vúü—V7Ü„üÏV(àÈüøV/’ɨWúü¬W63 trace!("Position is: x: {}, y: {}", pos.x, pos.y);ÁüãW74 trace!(target: "app_events", "x is {} and y is {}",Áü›X>; if pos.x >= 0.0 { "positive" } else { "negative" },ÁüÚX?< if pos.y >= 0.0 { "positive" } else { "negative" });ÁüšY41 trace!(logger: my_logger, "x is {} and y is {}",ÁüÏY>ŠÛüŽZ?ÒÛ<ÎZÅ…ëœèZ´æZ(|ÖZz [ ÿb Ä\ ü\8Ê4Å\& Ë\, Í\8Ê4Î\& Ô\8$Õ\$ Ù\8ê4Û\& á\, ã\8ê4ä\& ê\8$ë\$ ï\, ñ\ ò\ ú\, ó\8ã¸ô\& ÷\8¯ø\ û\*þ\ ] ÷] ] ö], Œ]8,]']8¿
”] —] ˜] ð]8Ê4™]& Ÿ], ¡]8,¢]'§]8ýd©] µ] ¶] ¾], ·]8Ê4¸]$ ¿]8ê4Á]& Ç], É]8ê4Ê]$ Ð], Ò]8,Ó]'Ø]8ô,Ú]'ß]8Æ,á]$ æ], è] é] î], ê]8ã¸ë] ï]% ø] ƒ_ ¥_
8Ê4„_& Š_, Œ_8Ê4_& “_8$”_$ ˜_, š_ _ £_, œ_8ã¸_&  _8¯¡_ ¤_*§_ ª_ ` «_ Ž`, µ_8,¶_'»_8¿
½_ À_ Á_ ˆ`8Ê4Â_& È_, Ê_8,Ë_'Ð_8ýdÒ_ Þ_ ß_ ç_, à_8Ê4á_$ è_, ê_8,ë_'ð_8ô,ò_'÷_8Æ,ù_$ þ_, €` ` †`, ‚`8㸃` ‡`% ` Ÿa Áa
8ê4 a& ¦a, ¨a8ê4©a& ¯a8$°a$ ´a, ¶a ·a ¿a, ¸a8㸹a& ¼a8¯½a Àa*Ãa Æa ”b Ça “b, Ña8,Òa'×a8¿
Ùa Üa Ýa b8ê4Þa& äa, æa8ê4ça$ ía, ïa8,ða'õa8ô,÷a'üa8Æ,þa$ ƒb, …b †b b, ‡b8㸈b Œb% •b ¿b Ëb, Àb Áb Éb, Âb8ã¸Ãb& Æb8¯Çb Êb*Íb Ðb ýb, Ñb8,Òb'×b8¿
Ùb Üb Ýb üb
, Þb8,ßb'äb8ô,æb'ëb8Æ,íb$ òb, ôb õb úb, öb8ã¸÷b ûbtÄŽü¤‹FC An enum representing the available verbosity levels of the logger.Áë‹úüï‹IF Typical usage includes: checking if a certain `Level` is enabled withÁü¹ŒGD [`log_enabled!`](macro.log_enabled.html), specifying the `Level` ofÁüC@ [`log!`](macro.log.html), and comparing a `Level` directly to aÁüÅ+( [`LevelFilter`](enum.LevelFilter.html).Á,ÍŽ·$IöËsX ÑÌÍÏÐÑÒÓÔÕÖÎÍÐÒÔÖ,¸‘´ÙŽ The "error" level.ÁôŽúüüŽ# Designates very serious errors.ÁbËË·$uwËË·$ À‘ï5$’’¬Ç‘ The "warn" level.Áá‘úüé‘$! Designates hazardous situations.ÁbËË·$uwËË·$$å’¬œ’ The "info" level.Á¶’úü¾’" Designates useful information.Á`ËË·$suËË·$,Á“´ï’ The "debug" level.ÁŠ“úü’“*' Designates lower priority information.ÁiËË·$|~ËË·$,»”´Ì“ The "trace" level.Áç“úüï“GD Designates very low priority, often extremely verbose, information.ÁËË·$ËË·$ÊÊÊ!·$ÊÊ!·$ÙÙÙÊÊã ã·$·$Ø‰ŽØ
ÙÊ Ž"·$%%#·$%%#·$Ý·ßÝ%%äå ä·$ å·$Ü–ŽÜ
Ý%¹
%$·$ßßæ æ·$€1Þ¡ŽÞ
ß==%·$áïßá==çè ç·$ è·$Ä:ॎà
á=¹
=ðð&·$ã»ãððéê é·$ ê·$‰;ⱎâ
ãð¹
ðêê'·$åÀcåêêëìí ë·$ ì c cˆ¢cµ
 `£c“A `àB¤GS
íë@ä¶Žä
åê±êý ý (·$ç›eçý ý îï î·$ ï­C€1æùè轎æÍì­Cý ¢e­Cý
ç­Cý ºý ý ý ¤Ü´ü ±MJ An enum representing the available verbosity level filters of the logger.Áî±úüò±JG A `LevelFilter` may be compared directly to a [`Level`]. Use this typeÁü½²TQ to get and set the maximum log level with [`max_level()`] and [`set_max_level`].Á’³úô–³ [`Level`]: enum.Level.htmlÁüµ³&# [`max_level()`]: fn.max_level.htmlÁüܳ,÷Ö \å´Ž&7¦ÏZl3ÿêëìíîïðñòóôõëíïñóõ¢µü÷´&# A level lower than all log levels.Á 8ééŽ&KMééŽ&,Ùµü«µ)& Corresponds to the `Error` log level.Á ;ééŽ&NPééŽ&$‘¶üäµ(% Corresponds to the `Warn` log level.Á :ééŽ&MOééŽ&$ȶü›¶(% Corresponds to the `Info` log level.Á :ééŽ&MOééŽ&,€·üÒ¶)& Corresponds to the `Debug` log level.Á ;ééŽ&NPééŽ&,¹·ü‹·)& Corresponds to the `Trace` log level.Á ;ééŽ&NPééŽ&Š&Š&Š&)Ž&Š&Š&)Ž&øÙøŠ&Š&ð ðŽ&Ž&÷¡´÷
øŠ& ¨´*Ž&â&â&+Ž&â&â&+Ž&ü·ßüâ&â&ñò ñŽ& òŽ&û®´û
üâ&¹
â&ª'ª',Ž&þþª'ª'ª'ó óŽ&€1ý¹´ý
þª'â'â'-Ž&€ïßâ'â'ôõ ôŽ& õŽ&Ä:ÿ½´ÿ
â'¹
â'Ö(Ö(.Ž&»Ö(Ö(ö÷ öŽ& ÷Ž&‰;É´
Ö(¹
Ö(Ê)Ê)/Ž&„ÀcÊ)Ê)øùú øŽ& ù c cˆ¢cµ
 `£c“A `àB¤GS
úë@ƒδƒ
Ê)±Ê)>+>+0Ž&†e>+>+ûü ûŽ& ü­C€1ù Õ´ñý>+€þ>+
­C>+º>+>+>+¼ï×
tô×
Ë(! 2Jj1÷ŠŽŒå«Ë(Žç0Ë(ƒØ w
 wˆˆ

 w wå«Ë(ˆˆì‘d”؈ˆå«Xw
Xwˆˆ
Ž
XwXwç0Ë(ˆˆâ’<°Øˆˆç0 !Ú×1
Ë(Á/Á/Á/2
Ë(WZÁ/Á/2
Ë(–ÙŠÁ/Á/ý ýË(Ë("à×

Á/s0s03
˜˜Ë(™Àcs0s0þÿ þË( ÿ c cˆ¢cµ
 `£c“A `àB¤GS
ë@#ç×

s0±s0¬•êüÜÞ# The "payload" of a log message.Á€ßúL„ß # UseÁŽßúü’ßKH `Record` structures are passed as parameters to the [`log`][method.log]ÁüÞßEB method of the [`Log`] trait. Logger implementors manipulate theseÁü¤àLI structures in order to display log messages. `Record`s are automaticallyÁüñàC@ created by the [`log!`] macro and so are not seen by log users.Áµáúü¹áJG Note that the [`level()`] and [`target()`] accessors are equivalent toÁü„âJG `self.metadata().level()` and `self.metadata().target()` respectively.ÁüÏâLI These methods are provided as a convenience for users of this structure.Áœãúl ã
# ExampleÁ®ãúü²ãHE The following example shows a simple logger that displays the level,ÁüûãB? module path, and message of any `Record` that is passed to it.Á¾äú<ÂäÅ…ÄÊ伩ãäúüçä$ê©üŒå=: fn enabled(&self, _metadata: &log::Metadata) -> bool {Á|Êå trueÁDÚåãåúüçå,) fn log(&self, record: &log::Record) {Áü”æ0- if !self.enabled(record.metadata()) {Á´Åæ return;ÁdÜæéæúüíæ" println!("{}:{} -- {}",Áüç# record.level(),Áü´ç$! record.target(),ÁüÙç# record.args());ÁDýçØž̆è fn flush(&self) {}Á, è‰Œ<¦èÅ…®èúü²è-* [method.log]: trait.Log.html#tymethod.logÁÜàèÅÕäü蔼ü™é0- [`level()`]: struct.Record.html#method.levelÁüÊé2/ [`target()`]: struct.Record.html#method.targetÁ 4 ê
Ê*V!(…×»œžŸ §ê´±êD±êšš­,ÄÍê$Íêšš²ïüëê'\ëêššÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙË(ü˜ë $˜ëšš™¦Œ¾ë$¾ëššãmÏ6Ï64
¢¢Ê*£Ù£  Ï6Ï6 Ê*Ê*¡$†ê¡
£
Ï6885
¥¥Ê*¦Àc¦88ƒ Ê* ƒ c cˆ¢cµ
 `£c“A `àB¤GS
ë@¤%ê¤
¦
8±8äµü‘ƒ/, Builder for [`Record`](struct.Record.html).ÁÁƒúüŃ\Y Typically should only be used by log library creators or for testing and "shim loggers".Áü¢„XU The `RecordBuilder` can set the different parameters of `Record` object, and returnsÁüû„.+ the created object when `build` is called.Áª…út®…û‚½…ú<Á…Å…ìÉ… use log::{Level, Record};Áç…úüë…" let record = Record::builder()Áüކ1. .args(format_args!("Error!"))ÁüÀ†(% .level(Level::Error)Áüé†$! .target("myApp")Áüއ,) .file(Some("server.rs"))Áü»‡$! .line(Some(144))Áüà‡0- .module_path(Some("server"))Á쑈 .build();Á<¯ˆÅ…·ˆúü»ˆHE Alternatively, use [`MetadataBuilder`](struct.MetadataBuilder.html):Á„‰ú<ˆ‰Å…ü.+ use log::{Record, Level, MetadataBuilder};Á¿‰úüÉ/, let error_metadata = MetadataBuilder::new()Áüó‰,) .target("myApp")Áü Š0- .level(Level::Error)ÁüÑŠ%" .build();Á÷ŠúüûŠ"Ò¬üž‹-* .metadata(error_metadata)ÁüÌ‹1ÿ¬üþ‹$! .line(Some(433))Áü£Œ)& .file(Some("app.rs"))ÁüÍŒ0ƒ¯ìþŒ½¯Å… 
¨¨º+îå!rÐΩΔا§Ê*JCJC6
««º+¬Àc¬PRJCJC º+  c cˆ¢cµ
 `£c“A `àB¤GS
ë@ª&­ª
¬
JC±JC¼¹±üÝ©! Metadata about a log message.Áÿ©úLƒªè–ªúü‘ª@= `Metadata` structs are created when users of the library useÁœÒª logging macros.ÁæªúüêªB? They are consumed by implementations of the `Log` trait in theÁ¬­« `enabled` method.ÁëúüÇ«DA `Record`s use `Metadata` to determine the log message's severityÁ|Œ¬ and target.Áœ¬úü ¬DA Users should use the `log_enabled!` macro in their code to avoidÁüå¬(% constructing expensive log messages.ÁŽ­út’­û‚¡­ú<¥­Å…ü­­'€©Õ­ú¤Ù­äÇî­úüò­ Èü“®8˜ªüÌ®+ÚªLø®÷‹‚¯úü†¯(¨«ü¯¯0Ú«üà¯C”¬l¤°á‹L²°÷‹Ô¼°†­,×°‰ŒݰúŒá° # fn main(){}Á<ó°Å…Dı
®®­,’î Ì/A¯°ͱd×±,×±­­·$|é±4é±­­ç0ŽMŽM7
²²­,³Ù³lnŽMŽMˆ ˆ­,­,±(„±±
³
ŽM4N4N8
µµ­,¶õ÷4N4N4N ­,€1´)‹±´

4N]O]O9
¸¸­,]O]O9
ºº­,»·ß»ÁÄ]O]OŠ Š­, ­,¹*±¹
»
]O¹
]O¾P¾P:
½½­,¾»¾cf¾P¾PŒ Œ­, ­,‰;¼+š±¼
¾
¾P¹
¾PcRcR;
ÀÀ­,ÁïßÁ
cRcRŽ Ž­, ­,Ä:¿,Ÿ±¿
Á
cR¹
cRLSLS<
Ãí,ÄeĪ­LSLS ­, ¾§€1ÂùÅÅ-«±ÂÍì¾§LS¢e¾§LS
Ä
¾§LSºLSLSLSTT=
ÇÇ­,ÈÀcÈTT ­,  c cˆ¢cµ
 `£c“A `àB¤GS
ë@Æ.±±Æ
È
T±Tôñ¹üµ30 Builder for [`Metadata`](struct.Metadata.html).Áõúüǵ\å©ü¤¶^[ The `MetadataBuilder` can set the different parameters of a `Metadata` object, and returnsÁüƒ·.¯«²·úl¶·î›Ä·ú<È·Å…Ìз let target = "myApp";Áüê·&# use log::{Level, MetadataBuilder};Áü‘¸)& let metadata = MetadataBuilder::new()Áü»¸,) .level(Level::Debug)Áüè¸'$ .target(target)Áü¹! .build();Á<²¹Å…|ü¹
ÊÊÁ-=e¤ÉÉ­ËŒº´–ºD–ºÉÉ­,ÛVÛV>
ÍÍÁ-ÎÎPRÛVÛVÛV Á-€1Ì/ùÌ
Î
ÛVWW?
ÐÐÁ-èêWW?
ÒÒÁ-Ó·ßÓWW Á- Á-Ñ0ǹÑ
Ó
W¹
WEXEX@
ÕÕÁ-Ö»Ö¼¿EXEX˜ ˜Á- Á-‰;Ô1Ò¹Ô
Ö
EX¹
EXYYA
ØØÁ-ÙïßÙ`cYYš šÁ- Á-Ä:×2×¹×
Ù
Y¹
Y¦Y¦YB
ÛÛÁ-Ü›eܦY¦Yœ œÁ- ¾§€1ÚùÝÝ3ã¹Ú–ȦY¦È¦Y
Ü
¾§¦Yº¦Y¦Y¦Y!Z!ZC
ßßÁ-àÀcàØÛ!Z!ZžŸ  žÁ- Ÿ c cˆ¢cµ
 `£c“A `àB¤GS
 ë@Þ4é¹Þ
à
!Z±!Z§wü™ŠRO The type returned by [`set_logger`] if [`set_logger`] has already been called.ÁìŠúüðŠ&ÇÖtÚ‹·/a#˜‘OMbüâã€1·/§w5€1·/áá
âé‹áá€1ccI·/åÀcåcc¡¢£ ¡·/ ¢ c cˆ¢cµ
 `£c“A `àB¤GS
£ë@ä>Ç‹ä
åc±côwüôZW The type returned by [`from_str`] when the string doesn't match any of the log levels.ÁÏŽúüÓŽXU [`from_str`]: https://doc.rust-lang.org/std/str/trait.FromStr.html#tymethod.from_strÁù/ã9^P$)çè€1ù/ôw5€1ù/ææ
çŽææ€1ddJù/êÀcêdd¤¥¦ ¤ù/ ¥ c cˆ¢cµ
 `£c“A `àB¤GS
¦ë@éé
êd±dheheKù/heheKù/í·ßíhehe§¨ §ù/ ¨ù/ìì
íhe¹
heßeßeLù/ïïßeßeße© ©ù/€1îî
ïße¼¢äô The global logger proxy.Ád­1ð|©!ÃñQ(ðð1BgBgMÀcóBgBgª«¬ ª1 « c cˆ¢cµ
 `£c“A `àB¤GS
¬ë@òò
óBg±Bgת= “•ª=‘ת= ¶–ª=ª=Ùª= ᚪ=L뚪=»×ª=ÎÖª=ÇЪ=ª=¯Íª= ‘¸ª=ª= ›¹ª=ª=•˪= ؽª=L⽪=øÉª=ª=ª=ð¿ª={¿ª=¦Úª=ÐÚª=ß¾ª= îÚª=ÆÛª=ª= åÛª=Õܪ=Ò½ª= üܪ=óݪ=ª= ©Þª=·»ª=ª=¢ºª=ºª=ª=¸ª=’·ª=ž¶ª=ª=³ª=²ª=ª=̰ª=ª=ª=É®ª=®ª=ª=ꬪ=Ÿ©ª=·«ª=ª=®©ª=©ª=ª=‚ª=ª= âǪ=DãǪ=ª= ÿɪ=4€Êª=ª= ª= ÿ̪=D€Íª=ª= ¾Íª=4¿Íª=Ÿª=õͪ=žª= ·Îª=D¸Îª=:ª= Ϫ=4‘Ϫ=霪=s‰ª= ­Œª=L·Œª=µˆª= Óª=Lݪ=z‚ª= øª=Dùª=¿ª= Ѫ=4Òª=yª=Öª= Ù
ª= Û
ª=Dø
ª= ª= ª=,› ª=p~ª= ª= ƒª=D ª=˜}ª=o:ª=Ç9ª=Í9ª=A9ª=Ä8ª=Ê8ª=G8ª=M8ª=…7ª=7ª=êª=þ6ª=7ª=w1ª=Ï0ª=Õ0ª=I0ª=Ì/ª=Ò/ª=O/ª=U/ª=.ª=“.ª=Ê)ª=.ª= .ª=¤+ª=É*ª=Ï*ª=s0ª=L"ª=q!ª=w!ª=8ª=[ª=aª=JCª=ת=:ª=|ª=ª=åª=ëª=Mª=Sª=¥ª=«ª=ª=ª=Tª=mª=±
ª=·
ª=
ª=
ª= ª=ˆ ª=Ú ª=à ª=Ý
ª=ã
ª=!Zª= ª= ª=cª=ª=ª=dª=uª={ª=ïª=µª=»ª=Bgª=*=GTbqv÷Òhttps://docs.rs/fern/*/fern/Ástruct.MetadataBuilder.htmlÁerror!Á warn!Á db_loggerÁ(https://docs.rs/env_logger/*/env_logger/Áhttps://docs.rs/colog/*/colog/Á3https://docs.rs/alterable_logger/*/alterable_loggerÁ max_level()Á call_loggerÁ
std-loggerÁÒ$https://docs.rs/logforth/*/logforth/Áìí¿­îºwin_dbg_loggerÁÇîmacro.log.htmlÁîÕî(https://docs.rs/log-reload/*/log_reload/Á¥ï macro.debug.htmlÁíïÒ‘ð¿­îºÐð7https://doc.rust-lang.org/stable/std/macro.println.htmlÁéðÕîˆñÀñ flexi_loggerÁíïô̧ https://docs.rs/log4rs/*/log4rs/Á‘ð¿é android_logÁ ºÐðmacro.log_enabled.htmlÁüñ"https://docs.rs/log_err/*/log_err/Áéðˆñmacro.warn.htmlÁÐòÀñfn.set_logger_racy.htmlÁôÌ÷ò¬ó ./macro.trace.htmlÁÌóüñíó ôÀô stderrlogÁÐòôË"https://docs.rs/ftail/latest/ftailÁÌ÷òsystemd-journal-loggerÁMetadata::targetÁ¬ó  ô÷ô*https://docs.rs/console_log/*/console_log/ÁíóÌóÀô¬õfn.try_set_logger_raw.htmlÁþÊõüõ—ö./macro.debug.htmlÁ÷ôÃöpretty_env_loggerÁ¬õŠ÷*https://docs.rs/clang_log/latest/clang_logÁþÊõ© slog-stdlogÁMetadata::levelÁüõ—öÀ÷0https://docs.rs/logcontrol-log/*/logcontrol_log/ÁÃöã÷enum.LevelFilter.htmlÁŠ÷…øþ©ÄøÔø./macro.info.htmlÁÀ÷úø simplelogÁstruct.Record.htmlÁã÷»ù;https://docs.rs/structured-logger/latest/structured_logger/Áç…ø©syslogÁMetadata::builder().build()ÁÄøÔøš¥÷ù,https://docs.rs/log-to-defmt/*/log_to_defmt/Áúø™úfn.set_logger.htmlÁ§úª»ùÊúç ššû¥ûê./macro.warn.htmlÁ÷ùâû
simple_loggerÁfn.max_level.htmlÁ™úŸü§ú(https://docs.rs/std-logger/*/std_logger/Áª 4https://doc.rust-lang.org/std/str/trait.FromStr.htmlÁÊúçˆ spdlog-rsÁformat_args!("")Ášû¥ûíü&https://docs.rs/db_logger/*/db_logger/Ášâûêýtrait.Log.htmlÁŸü¡ý€þÉýªˆÉþ×þ./macro.error.htmlÁê§
íüþþcologÁ¿ÿý¡ý*https://docs.rs/call_logger/*/call_logger/Á€þÉýfernÁˆÉÉþ×þœ€€0https://docs.rs/win_dbg_logger/*/win_dbg_logger/Á§
þþmacro.trace.htmlÁ­€alterable_loggerÁ¿ÿÉ€œ €€³ó
env_loggerÁ§
~­€Ž‚,https://docs.rs/flexi_logger/*/flexi_logger/ÁÉ€logforthÁÆœ*https://docs.rs/android_log/*/android_log/ÁÁ³log!Ámacro.info.htmlÁÖ‚
log-reloadÁŽ‚óú‚¶ƒÆÓƒÁ–„println!ÁÖ‚°„&https://docs.rs/stderrlog/*/stderrlog/Áú‚log4rsÁ¶ƒÆ@https://docs.rs/systemd-journal-logger/*/systemd_journal_logger/ÁžÓƒ log_enabled!Áí„log_errÁ°„Á­macro.error.htmlÁŒ…–„½…pÂcÓ…ž܆trace!Á£†í„º†Ê6https://docs.rs/pretty_env_logger/*/pretty_env_logger/ÁŒ…ftailÁ½…p*https://docs.rs/slog-stdlog/*/slog_stdlog/Ástruct.Metadata.htmlÁÓ…žš܆ž‡ console_logÁº†£†¿
ÅÀ‡fn.shutdown_logger_raw.htmlÁÊ ˆp•ˆĈdebug!Áž‡ùˆÊ(https://github.com/drakulix/simplelog.rsÁ¿
target()ÁÀ‡¦‰ clang_logÁˆ https://docs.rs/syslog/*/syslog/Á•ˆĈæ‰logcontrol-logÁùˆ‚Šfn.set_max_level.htmlÁ¦‰¿
´ŠÍŠáŠÀinfo!Á¹ «æ‰˜‹0https://github.com/borntyping/rust-simple_loggerÁlevel()Á‚Š·‹´Šstructured-loggerÁfn.logger.htmlÁÍŠ˜#https://docs.rs/spdlog-rs/*/spdlog/Á4https://doc.rust-lang.org/std/macro.format_args.htmlÁáŠÀó‹ log-to-defmtÁ¹ ˜‹”Œenum.Level.htmlÁÉŒ·‹ýŒçŒ˜Ã½îÀ󋎹 ‚ïÝ¯ŽÉŒýïýŒçŒ˜ìíîà ½îÇï¥ï¯ŽÝïýï macro@logÁ¿
¿
¿
Åïy~ÃLðìŠ  غãàéæ³Œ""“""Û Þ ã ŒMÃMÐLÇLùMÌìÍì“íµßíßTraceDebugInfoWarnErrorOffBorrowedStaticRecordmetadataargs module_path fileline
RecordBuilder
recordMetadataleveltargetMetadataBuilderSetLoggerErrorParseLevelError GlobalLogger Lkey-value support is experimental and must be enabled using the `kv` featureLø.~OFFERRORWARNINFODEBUGTRACEJattempted to set a logger after the logging system was already initializedJFattempted to convert a string that doesn't match an existing log levelF©‘µ‘À‘Ë‘בá‘ð‘ý‘Š’™’¤’¶’Á’Ì’à’í’ô’ƒ“œ“²“µ“Ê“à“ó“Æ”Í”Ö”à”ì”÷”‚•Ž•š•ë•(¹ä>º•ð*”ý |,ØMÁÌÎ&Ù³’óŠùïäs_ÏéæîÊü+pÞ P¬ûè
ÍÊVÑ|Í/þ #ŠÙ´®Uók/4°5Në/¹ˆ.´¶:wöè³Aú*¹0USªíç;°Þ¦-£ä˜ö«ç-=3>f@¡¯¦;…ý>B ûMœ;ì‰Ã†ï¬ú¥f®„˜ø”Cj!‚I•´jÚØKøKä®À¯{þ4Á—À7Íö¨
Ñ8*&¼Rô§ãD[Ö|þZ\uËÃý&D¤¾ yš³¸`‰dÜӜ喅 ²D󵓞ãµþ8ó‡–×——]ЭJÅ‘QÁ.­Ûñ"ƒÿ˜°&z¹` G="Tè‡J0+6«cð0|&ˆo.·ãL„ÃGOXrü£0ÌŸéºóAW5[Ô¡Î ü0-ôÒm‘ÐuTXó× Œ‚0U´=êÞš¸^~‰ÒóuHÑÞùz§E@RzÍžüòÆÊRÔ¿CÚ¹%{»¯åðpÊ5^BýãºÞ™sJí,‹5ãKd4¹m¹²š¨1FtÂÌ#SÓ/Áî~|79ûÿX Éu•qý¾KF±áNiÊÝíšÅ©{-Ñ­Ç‘$NL5ÇHÉ64M{Œ:Õæ³+¼­B|V¼ªA/edgÑË”NWj‡@iÎpü €3t`Ci„§ˆÿ&ŸùwMÈŸƒ†{èa£ja3ÆëË›„öíú²¬t:UE^6I
ß‘dŽÉ…Z³G»Ô
»w@ý&áWÉ¡WÆb¢
 j*b~Ù,=u-ï
¹ø ,M*V« áØ¸md÷|ÊÊûÜÂ(
ᗰʺT#Š(È
OˆÇý çr7½»åmÌÌ­¿w7ÅkS˜Äpž®ï¸ÖÒïLj§8IVÆ1ä{UÏÙ/”ƒÑR7†c¹M85:¸j­D+$+ºü|"…tÍ„bÂ*uB
$MR”fŸöÅ/Kð΃i@2êÏJŠ…ÝáJ
u{™JbM;ª‚G&ÊjŠ{ÓA:¿4ÓÓ-GßãÈÉÌ^ºfÃ>Á΀‹*IÊã¢i⃵ÈTšüJ‚K‰D¼õdÛc}5š|¤§îœÏ¯§ýäñ­Ñö‰4$è[ý3+ ¢€ü.KšÉ‚°`?l üÄDõI_£ßB!}8X€5)ÚHL(Î¥7ŸÞüF8e©h½â¬üŒ„£ä`"·ÄÑY[”.`X‘éÆ-ŸÌåB÷Ó¾ú•ýZ%çxY²…o=^pK>×ög÷g*ªã’˜w»z>cAxê=ºŠ,ÄIé’,­•%±tgDª¢'þéoÝ'öÝ–l‹Y½Ããæá@®oRŒò;¸ãвÃ}ubò«a«}?Á7hçþÚ@EÆtsEæHN÷¼ieÏ\¨~ž~ð·Kž!1øý@W!}NÆmS:·í
—V5ËJ:0_,®w´ÉN'éÕ t‚ÝÒdÀ£`ή}ødý ƹ£( ê@s£ Æ|C÷|¼¤úŠ‹T¾+Í‘ Ž,Œ ÕBí
Pó­çÓ-&€EãG2†ö†Œ°ý¼Öé,q‹rójÚéÕg=¥íDˆ]È|z›®lÎ4ÍÚ<‡ÑLè)3®ÖN?´Ð°ë¤º˜U]Ì.J±.”£/ô:Áf+ºPZÔó™ˆ*–å‘m¸èBÀ"WsÑc”¶Ô\€x[Y™q\8ˆ "ƒ–e £BFn«’¨owË‚/[ªýãT,Ïi*ÖV’÷â%F[„8
xÜ[у;iÊΉR`¹eý*ëVœ”˜+þ­ŒD½HU½ï‰´Qn<ß*3?]òóø$oŒ‡§÷ž!AÑ(¤Xv0޳ zTª©Îhàc9\8•B•‘°¡Gù-ÎQ8î„kÐÑñþõ—ò…”|óö3€à4÷$Þ¹Éã†1_Ëf`¥#~ò¢Øñ6õé0º(Ì3
÷ž>6 À3¶6mô…ùï³+€„|¼4b}ÿ¡=œÅoï2mñ€ß0WÚ%W¿ºÕ?ª¸PøË@á'Ë•Љ±Í§§~®ØöJŠ"­®Åà,8%ß4˜ÙIÖ]Ê gÙÐ{¢Uài×V—w1,,`ƒ J¨LÅÕ#±Õ/wÑÊ·í–9P,Øk<³~(U©¼ÒÓD,¹±¦eW9|=& !-¥Á´Ä3¯i¾8ýè˜ _-v\“:AotñÇÖÑ[í:¾5÷’t/µ  c–ÎÇ3ˆÃ4˜nE*êÓ~M¤ý,œ7f.¡´;¥9¼ø9sœæ“ÊÌø:+w¥kR$Žw>x¶çOº\_::€â|ÁÆ¢j;åï!NisZÑ#Õ!ý(ÅjCÿRR-бÃuúpƈ``˜(É=)Ðø1".f_Ê^¨¹x`ÂÆ™xeüå
ì󇃞ý³å_é{¿z!ž=Fa~mÈÂÁŽ^ùæƒórêµk'Üqç¶,EGY›úÓÃ@
Ô»÷õFrÓ÷Å5ä¤A25§ô]†¾ýÉ™(¿¿yÖJqZþ{Í“[‡Ô!à• xëŽÿõ:`e 1QðɲËAø/ˆ Ù3ú†ŸŽ$Ó„7k©´-Þ?l
lOÓ‰œd}÷ŸÞTWÄXlÆ%AÒŽ; Èû "îRDÌ#ÕÙ?¥>FÃ5¯Hšõ­ØOú`è­·ƒ+ÓG‹ òÎn–­q*Æ’ÐÉËè¯Ã|¾4"k°îü9¥ÛETVžõñu©_v½ç¼>~ÊÒ‹aê'G)ÕçàºÒ™E½¢r«×rl¬™Æ<•¨G×[-~,º"è‡8q.ÓÄ}¥ÆQû4ËE/Ì_
sý‹nᜠ&„j¹[½{!èÓ
Ž¢ˆçneTTðŠ)
˜U´Pùˆ]~Û¾¯£]ìíÞÜŸ½ ¡sµwÞõckVL:4±‘¡ýøªý¸Ò•zr#Xz‡iºK6½ÔvF¸iOuVÕÇεÖHBÉÜÛîá-èƒL¨Ø%?Íþw>Á@úSz:>8ŸîrzÍ”C©Áv$ÖÙ‹Lð–SŽÓÙ±a'ù=š®a
 Â7eCýœ#)7ÝÕè¹z‚¶Å41ªäÔ4©…'áw
ý.ž¥šLíf[×ôPsÃ[\FÀý”ÎÁ‚é|n»Ì`‹PrŽ>ÐZ3?‡¼«½Ê"{Di¿PÅ !s&«5þS¾,Üò&Õ&ôâH¡\ÉS•SÐÙ–.<¯b¼áq¤„M¸l¿+/"g
Üìu=Èò—SÞâadìe “DöI­£Øóe(k¹W"^²V°V׺,2ɶ™êT~OFóW®Wþ…;é{.ÁÃyIÑ%jû€m‡§ú\›?H¡ø9ᨲÞ!%hF‚u]™6Ó½å ’EЍ`ºí;ng2Å9öÒšB,\«Ú°cT"z]é]ØlÀx”–‰7[ߨX“§È)7ü-Œ+V¿}+ذ=ç´jÞ^êL¾7\rL?2;“·×a¹ŠìM™<$M2C0ù\W†ÙÉ-† ¦ïœ›¹œ~nޏ…{Q^=
T{BáŠ÷pUª5°™™öUo9p‰5úJ¡¯æUø€ñˆMr>ÊêJPh:+Ùrkðýì=Qþí\ÀM˜Î~šþï›Q)~éœK%é÷éÔ Œ{šwÜYQúmÁÁ‰F·q
a3ºÅihJ<™i±=£·‹¡!c½¨$n´5®+yåd"
\ľӮø,)G/¸jmQ~ÉÅÛf7€­BJîÁÝ|ïÎ=:QÓ2?îËüÙÐ2{*žxQûdP5ƒn±ì}g‰Û[±Ùé˜Ë¬}BœîÌâp\ÜmD§©ÖmÕÑØ’—D¹Aè(ÿ Êï·aÛ«ÉǾ<Çm„šõªDx˜©‡· rqˆs‡»µ¯¹§+Úæ´bl‹Û_°ÿz©öêF|z@—RqÀþ\ñgw®c„_j½×Ô¼´”¬Ôc‡ùN€ÒŸhñÊyC˜™EK ‚«[tœä‚6AîbÄ XËõ dÿ*S@šÚeÖiö²/euéhLgÒŽ|Á0ÛËRõ]çcÓ‹]ø^ ®°®RAö=kÄØ>^lÌ¢ªoE¡<zátUÜãšáú"h,ä÷
ÁXïˆ!ñoÑÚ20{ÈSšØë–kó
ÄŸUZšƒR=wØO1-&Œp¨÷—Dãµû‡Äe’Iy ¿¬–\úçð?«»¤âd(D1û˵8\CuðY̵ÿt!è'òÇÕúTõàܘb:êEÒ-ª–ÑãÀAÁ—uâ„WSšêÿð-è{Tw'bjÒŒyÍÀv$ÇL†»±ÜŽ·b=V^ÍV˜ 4
ÔLCÑ“
æôöS©a{ ß­¸UÁ µ6V¬úâûiç.ïöUmG.&Š"½Ó8§EŽp‚ÖÕ»Q¼÷¾úœ–x¸³”Kˆ;ŒÇ!:YU3lOÒßí¼†8°(r„zHP&u›áh£N&B䥗~v8"¥u ðu
aV
ôÌFÞžâ+l3À_ã#Òæ åx\ëøØš­ü62ió?Âs«x¥ý`A÷oQ!Ç6j®›xWéÐuåâó…¹q·\6òϧ䜷S2%¯Ò‹¿¦s´ÙΊaíÑ=êîËrœä'gÐ$SFZ!ã"QwÚà;üÐ2xM¢u:«çjL¯z£“zÌgé#'CÄûûîÅ¿·PÊÎI1ª0=tf¶Û¤ó5¸fÿ/Þqê[âXÁlÌH蔉£Îâø*ѳx&3 ê-0ñ–†ÆÏS¶GUÊÛ8ãyDBV7Ñót7 …4²jy.PX¹µK!U·nÖ¶s2 n /çuSdódR=Í~=<ÇRsùŠoœ´ÐÿÈá™c÷[é,šDÔò^ç,’Ÿ1¨Ý¢z%Ÿí‚J²:©Ì]dr
¹öü¶[r^l4&Û>–§{ú[óðŒ»J„·bò|ŸÁ—¼6¡–Ís-”æa 
 ‘ºá¡F:ÊõãIEsÆÜ¯D@;åJ3¡Lˆ2ãò7ƒ}Q+‰r?öÒ:BS #ÅÝš×χ¹½œ&®#×Å:Ä¡jr$Øþb¬‚dç¾°—!PÆ1i­;óf䉛ØX^ÒHaYZ\áÎ#À`Ï—×9yëý°Aús‹
Lè-7¨õs[‰˜¥DíùU+˜
ôTJb7ŽÙa"2Z¬œ.ñ^÷Vm–ê“õKÈâ vCã\yí—7µF_aCúÍUè$¥‘»ɓöêÒ™øûr‡‹„ÿŸ*:˜œXÎdÿ>çÆÞ#çôCWÅúmÎ2ÖKc½ú.•-
'®­ù”²À±•Hø«
«ûÆí¨Ã•ߘZ’¢W§-úÕ{©Þô€²)æÀ%H(WvkN…„tPÃ>QÓ]y˜7 Ã/­" þp_&ñìÝ1¸ÔÚOOPüXžbˆ /¸éIœY ]ƒåµƒ^w—‚Bzö˜Í‹Ià Nè6ÜŸŸü7®õ³G¼'¿–Àhj›ð»£G9PÎÂør%€÷‹º_â^I\°r¸ÿ@WaZÞôGERįÐÚ!@ÙÔeFμÒ 41Æ„·{àÂä]gþ´ Ÿ3Ë.ôßî³æ3n¯460…1J´kj˜û•hÿ<z(þVEàAÞîëtÞ!ì{ t/ z/ÝÞßàáâã¹´
ç
m  Ï ¾ ܵÔ,_ã:µoK¬»
B6Ð&A'(U*s*)+G+ý+¾,í,¦.ä."/1//:0j0ô0$1j1œ1I23l3Z5:7É7` 8D@:7JzRºZ½c>lõtãvw-xÈxly+zZzzzÎzâz÷z{{ { |,||µ|}>}ì} ~~´'ýqƒ ƒÀƒ(=^ÆæQrÛûd2RíWˆµˆ͈*Dk­à8ŠkŠ"-JfæP¨Û’'”¸šÒšº&›ˆŸ¤Ÿ¾ŸïŸG x ê ¡F¡µ¡è¡X¢Œ¢ü¢/£â£¤Ì¤B§\§§ÿ§%¨Y¨È¨û¨k©Ÿ©ªBªäª«Ì«¬Í¬í¬­á®ø®¯Æ¯Û¯ü¯d°°ð°h±ˆ±‚!´uŸ v -+// 
vg ˆ®Ö6×¾פØrÙyäååpæ>ç
óó®óJôæôƒõZ
ö ýóTœ ¤ þ8a*5+/S0
1v1¾vÆvÎvÖvÞvVzkzÞzóz{{|¦|/}ý}Ÿ§¯œƒ±ƒ$9N×bìuC.ˆBˆa£ËVŠ4;ƪšðšxŸÜŸe ¡0¡Ó¡v¢£¤4§z§¨C¨æ¨©-ª«n¬Þ¬® ¯ׯì¯u°=±y±+++++++++"   

 (      ++++++***** ****** ))  ''(´ž¶ŹÍúÎÐѶÔÓÔéÔÿÔ×ÖØ×ØÌØŸÙÚŽÚ€Û—ÝŽá¢ä£åÐå˜æçç¡è»ò×óõ«õ¸ö÷ê÷€øù›ùÐú§û¡ü¶ÿ/0ß=£[ü˜ŽÙCg ë š
* ¬  >õÛw(ûÍcû'Y&o'-**_+£,Ö,u-Â./(/7/¬/0;1³1`2/3ƒ3q5Q7ç75:BLYT\]áe“n„vBwjwïwxŠx²x.yVyïyzz.{Ð{B|Ë|T}"~K€é€_ÔüI‚q‚¿‚ç‚Öƒt„ˆ…š†h‡ô‡ˆ·ˆÒˆ,‰ö‰ŠO’k’‰’ë’f“ñ“½šŸ©Ÿ ¨ þ¡¢¢§½§©µ©‘¬¸¬­¼®ã®°´°±ž±z͹ÎÌÏÇÐìÑÓ™ÔÉÔßÔõÔ ÕôÕֹ֭֜×Î×çדخØÙÁÙÄڷ۲݊ÞúÞÄá„äïä å™å²åçÿç×èŽé˜ëì’ïñòóóó¹óÈôñôõ×öœ÷½øúåûßüœý£ýÕÿww&ÖJë£CÕý8[b­¥¬3
á
g  Ê ¸ Ö°Ïþ'Y Þ4¢¯jF¦µ<Ë&;'ð'ý'O*m*#+A+÷+¹,è,j.o.r.v.z.~..†.Œ...š.ž.¢.Ú.à.//-/Š//50_0e0ð011f1—1E23f3G5T577(757·7Ä7Z8@:3JvR¶Z¹c:lðtÞvSw{wwx(xxÃx?ygyz(zWzwzÈzßzôz{}{{|)||²|};}é} ~¢~±~¯€ú€"p˜å