Files
boc/aamos-ledger-rust/target/debug/deps/liblog-d0fa218afbce2067.rmeta
T

491 lines
159 KiB
Plaintext
Raw Normal View History

rust
y#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ÕÖÆ ¾”šrÿ9Ø·$Š ·$Ðì·$µß·$·$·$íß·$·$º·$¿c·$še·$µß·$éêëÒìíîï˜ðñ©òópôõÆSÂ+>È–¨Ýíß·$Ž&ïy·$Äc·$ÛŽ&ØŽ&Š Ž&ÐìŽ&µßŽ&Ž&Ž&íߎ&Ž&ºŽ&¿cŽ&šeŽ&µßŽ&·$íߎ&·$ïyŽ&ÄcŽ&Š ˆŠ§ŒˆŽÂˆ¹nø)¹
ÛË(ØË(¿cË(ˆŠ§ŒˆŽÂˆ¹nø)¹8µßÂ)Â)ºÂ)íßÂ)Â)šeÂ)Øššžœ Àž¹ ŸÌ šòè+O|ì\
¿cÊ*¿c§§ƒ© õ›¹ÆàÁŽ
³§§ƒ© õ›¹ÆàÁŽ8Ø­­Á¯ °êOŽ1ì&çP
­,Ðì­,µß­,­,º­,íß­,­,še­,¿c­,ÉÉˆË }Qr1&Hœ
ÐìÁ-µßÁ-Á-ºÁ-íßÁ-Á-šeÁ-¿cÁ-³ÉÉˆË }Qr1&Hœ8~ƒÕ
 Oì ÓFQ
~ 8¥¿cááâºãˆ j¸I{Ù[f³Äc·/¿cææçèèˆ JI7šty ïÐìù/µßù/ù/ù/Äcù/® 
 
ç0
®
¿cððñ´ …bñ±~1×ËöéˆØË÷鈡š±­ÚËùéˆÛËúé·­ÏÉëæÜË!Ëûé4éKˆ¹­ÑÉìæÞËýéJˆ´­ÌÉîæàË#Ëÿé6éOˆ¿­×ÉâËéMˆ¼­ÔÉäËƒéˆ¤šª§Æ­ÞÉäáéæòðæËéQˆÂ­ÚÉ%Ë8é(Ë;éáæo§|Ɉ
·ð±
´
ÛÕØŠ #Ðìµß#5íß)º.¿c
"šeFïy"Äc ³~ ®ï5ï5ï5ï5°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Ø ˆ(ˆŠ§ŒˆŽÂˆ¹nø)¹~ ŽD§Ø ˆŽ(Ò@3¤A: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() {}Á«WËú¬Ï ## 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:Áú<«WÜ™ # use serde::Serialize;Áüµ96 # #[derive(Debug, Serialize)] pub struct Yak(String);Áüï1ôWü¡@= # fn find_a_razor() -> Result<u32, std::io::Error> { Ok(1) }Áüâ" # #[cfg(feature = "kv_serde")]ÁŒ… # fn main() {ÁÔ—íX²úü¶)YüàIF info!(target: "yak_events", yak:serde; "Commencing yak shaving");Áª ú¯Zü½ "ÇZôà òZüÿ 2/ info!(razor; "Razor located");Áü²!%Ø[ÔØ!†\Œó!©\Ü…" Err(e) => {Áü¡"GD warn!(e:err; "Unable to locate a razor, retrying");ÁŒé"©\lû"Æ]L‰#Ü],“#î]<™# # }Áü¡#'$ # #[cfg(not(feature = "kv_serde"))]Á”É#ü]<Ü#«Wä#úüè#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:ÁÎ/ú<Ò/«WüÚ/'$ 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- if self.enabled(
 ~‚ƒŽÄË­šéˆ§Éáâæçí_!Ào!â!¬“Cœ!ïy¯!×Â! `íÕ!ë Ëè! ×÷! é"
ý"¥$"Æ3"çC"S"Çc"ås"„Ä®‡"¼À¿
"ÅŠ«"ÆÕ»"ÇÖË"ÈÛ"Éèë"Ê_!_!_!Äð{o!D|!ŒÅ|œ!Ü|¯!¯!Â!Â!Õ!Õ!T€}4„}”Œ(|üè! Ÿ ´%  Š8Ê4—& , Ÿ8Ê4 & ¦8$ «8ê4­& ³, µ8ê& ¼8$ Á, Ã8lvlÁÄ& Ç8$ Ì, Î Ï ú
, Ð8keyÁÑ& Ô8¯Õ, Ø Ù æ& Ú, Û8captureÁ& ã8¯ä- ç, é ê ø ë, í8»& ó8- ù$ û ü% ý, ÿ  ˆ, 8argÁ& 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«Wüû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«W¿júüÃjQN This macro accepts the same `target` and `logger` arguments as [`macro@log`].Á(|•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' n8
,Œ•üÞ•&·$$ïß$ü™–C\œ–ö÷ ö·$ ÷Ž&Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ¿ßÀßÁßLessÁÂßÃßÄß~Å߯ßÇßGreaterÁÈßåºÝÈnûê7# ¨–#
$$©–¹
,¯–´Ÿ—·$&'ðyñy'D¼—Á—%%ù/üÜ—4Dß—ø øÖ¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
·$·$ðy% ï—%
' ,è—ܬš·$)Åc)üΚ6Ñšùúû ù·$ ú c cˆ¢cµ
 `£cbufÁ `àB¤GS
ûÖ¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
€1ŸÈŸÈ È O˜éBL( Õš(
)$Öš×ÜšT¯›·$+,-./23üÀ›(TÛï5Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ·$**
+À Λ¬žžüà+( 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’£½Ô¥£ú<­£«Wœ¹£ use log::Level;ÁÑ£úüÙ£# let mut levels = Level::iter();Á¤úü‰¤2/ assert_eq!(Some(Level::Error), levels.next());ÁüÀ¤2/ assert_eq!(Some(Level::Trace), levels.last());Á<÷¤«W$Š¥0**
/ÐZ”¥//â­â­MapÁå­ùæ­±Å@Iœóë ¶¥££¹ƒ£¹„£þ-'ºˆÉ¬gï51ï5·$€1Íìë±ùM묙¥ëúM·$\¢¥¨’Û·’"È’/Ä¥/<closure_kind>Á1<closure_signature>Á1<upvars>Á11/ü±ª(üñ¥/, 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¯§½Ô§ú<ʧ«WœÖ§ïî§úäö§ 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Á<¥ª«W”¸ªþ þ·$·$* ˪*
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€­½Ô“­ú<›­«Wœ§­ï¿­úäÇ­Ž•è­úüð­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Á<õ¯«W”ˆ°ÿ ÿ·$·$* ›°*
3$œ°ü÷%Ž&5·ß5üý·#€¸ Ž& ·$4 ƒ¸4
5$„¸¹
,Џüø&Ž&7ïß7üþ¸=\¹ƒ Ž& ƒ·$ï6 ¹6
7$޹¹
,”¹äþ¹Ž&9:ðyñy:D¡º¦º88ù/üÁº:Dĺ Ö¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
Ž&Ž&ðy8 Ôº8
: ,ͺü½!Ž&<Åc<üŽ6Ƚ Ž&  c cˆ¢cµ
 `£c¤… `àB¤GS
ˆ; ̽;
<$ͽ×Ó½„¦¾Ž&>?@ABEFü½¾.TÀ¾ï5Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙŽ&==
>À ˾ÜïÁüªÁ2/ Returns the most verbose logging level filter.ÁöÁŽ&==
?ü´Ã'ü³Â.+ Converts `self` to the equivalent `Level`.ÁæÂúüîÂ30 Returns `None` if `self` is `LevelFilter::Off`.ÁD»Ãˆ ˆŽ&±ˆ= ÄÃ=
@$ÅÃü¦Å$ü“Ä;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ǽԢÇú<ªÇ«W̶Ç use log::LevelFilter;ÁÔÇúüÜÇ)& let mut levels = LevelFilter::iter();ÁŠÈúü’È63 assert_eq!(Some(LevelFilter::Off), levels.next());ÁüÍÈ85 assert_eq!(Some(LevelFilter::Trace), levels.last());Á<ŠÉ«W$ÉC==
BÐb§ÉBBâ­â­¡å­ùæ­±Å@Iœóë ¶¥Õ‘D›’Ž&€1Íì°­wù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Ô˽ÔçËú<ïË«WÌûËžª™Ìúü¡Ì)& 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Á<„Ï«W”—ÏŠ ŠŽ&Ž&= ªÏ=
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ñѽԄÒú<ŒÒ«W̘Òžª¶Òúü¾Ò)†±ìÒúüôÒ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Á<¦Ö«W”¹Ö Ž&Ž&= ÌÖ=
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$€Þ˜ ˜Â) €1QSS ›ÞQÍì’ …Þ¢e’ÂŒˆÞ
R8’Â$œÞº,¢Þ46œˆð
UUÊ*VWXYZ[]^`aðüÏð%Ô¢ð Returns a new builder.Á<Öðº+TT
V
üÇñ)¬Ÿñ The message body.Á$Îñš šÊ* šäÈäÈ ArgumentsÁæÈtemplateÁ `çÈÀ `üö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
[
$ìõ¤ö[Ž’\¦’\Ã’\\[\Ò@¤A€1ü÷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ü¾ú1üãùHE The source file containing the message, if it is a `'static` string.Á\Åú¡ ¡Ê*ØÌT ÑúT
`
$Òúü§ü!üðû$! The line containing the message.Á$®ü¢ ¢Ê*Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙT ³ü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
$Ë•À$Ñ•üá—LüÀ–Ž Set [`metadata`](struct.Record.html#method.metadata). Construct a `Metadata` object with [`MetadataBuilder`](struct.MetadataBuilder.html).ÁDè—¤ ¤º+­,€Úb ñ—b
f
$ö— Dü—üÙ?üñ˜?< Set [`Metadata::level`](struct.Metadata.html#method.level).Á,Ê™¥ ¥º+·$±Ûb Йb
g
$Õ™ ,Û™üœ›CüÉš@= Set [`Metadata::target`](struct.Metadata.html#method.target)Á4£›¦ ¦º+ç0ãÜb ª›b
h
$¯›ê4µ›üùœNü¨œ>; Set [`module_path`](struct.Record.html#method.module_path)Á\€§ §º+ŒÊ“Þb Œb
i
$õ
$—üŸZü¨žTQ Set [`module_path`](struct.Record.html#method.module_path) to a `'static` stringÁ”–Ÿ¨ ¨º+ØÌÚßb ©Ÿb
j
$®Ÿõ
$´Ÿü‹¡GüÈ 0- Set [`file`](struct.Record.html#method.file)Á$’¡© ©º+ŒÊýàb —¡b
k
$œ¡Ì$¢¡ü†£Sü¬¢GD Set [`file`](struct.Record.html#method.file) to a `'static` string.Á\£ª ªº+ØÌ·âb ™£b
l
$ž£Ì$¤£üô¤Cü±¤0- Set [`line`](struct.Record.html#method.line)Á$û¤« «º+ÁÑÚãb €¥b
m
$…¥š$‹¥ü·¨!üø§,) 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
$ž¾ŸÂ¤¾üÚ¿Eü‰¿>; Setter for [`target`](struct.Metadata.html#method.target).Á4῱ ±Á-ç0ýìv è¿v
z
$í¿ê4ó¿ü”Á#üáÀ  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.Á<ÉÇ´µ ´™ð µ­­Á¯ °êOŽ1ì&çP~ ÑÇ~
™ð$ÒÇ 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.ÁìÉ·¸¹ ·™ð ¸ššžœ Àž¹ ŸÌ šòè+O|ì\¹€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ÁÌø.Oì ÓFQ
ƒ/*ø.´ÍÌø.…üêÌ'<íÌ»¼½ »ø. ¼­­Á¯ °êOŽ1ì&çP½ õÌ
$öÌ üÌ̭Ͱ;¿À ¾ø. ¿ššžœ Àž¹ ŸÌ šòè+O|ì\À€1 ´Í
$µÍ »Í|ÎÍ,ÑÍÁ Áø.€1 ×Í
$ØÍüäÍ08Â¥ÂÎì©/ éÍ~©/Τ/ŠŒŠŒ79ü›Î.<žÎÃÄŠä/ Ä­­Á¯ °êOŽ1ì&çPň ¦Îˆ
Š8©/$§Î D­ÎôúÎýÎÆÇÈ Æ¤/ Çššžœ Àž¹ ŸÌ šòè+O|ì\È€1ˆ ψ
8©/$‚Ï 4ˆÏ|ÃÏ,ÆÏÉ É¤/€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) making sure that **there are no otherÁü€ÜB? threads**, and (on embedded) that **interrupts are disabled**.ÁÃÜúüÇÜJG It is safe to use all other logging functions while this function runsÁü’Ý# (including all logging macros).Á¶ÝúüºÝ,¸¨”ÿÝŽ&€1
Ž ,’Þüñä!üàà*' Returns the current maximum log level.Á‹áúüá[X The [`log!`], [`error!`], [`warn!`], [`info!`], [`debug!`], and [`trace!`] macros checkÁüëáLI this value and discard any message logged at a higher level. The maximumÁü¸â74 log level is set by the [`set_max_level`] function.Áðâúäôâ [`log!`]: macro.log.htmlÁü‘ã  [`error!`]: macro.error.htmlÁô²ã [`warn!`]: macro.warn.htmlÁôÑã [`info!`]: macro.info.htmlÁüðã  [`debug!`]: macro.debug.htmlÁü‘ä  [`trace!`]: macro.trace.htmlÁü²ä,¸¨LøäŽ&
üýùIü½í/, Sets the global logger to a `&'static Log`.ÁííúüñíOL This function may only be called once in the lifetime of a program. Any logÁüÁîPM events that occur before the call to `set_logger` completes will be ignored.Á’ïúü–ïGD This function does not typically need to be called manually. LoggerÁüÞïMJ implementations should provide an initialization method that installs theÁ´¬ð logger internally.ÁÃðú”Çð # AvailabilityÁÚðúüÞðNK This method is available even when the `std` feature is disabled. However,Áü­ñLI it is currently unavailable on `thumbv6` targets, which lack support forÁüúñIF some atomic operations which are used by this function. Even on thoseÁüÄò30 targets, [`set_logger_racy`] will be available.Áøòúdüò # ErrorsÁ‰óúüó:7 An error is returned if a logger
 `£c¤… `àB¤GS
̈ ¡Œ
$¢Œ×¨Œü”%ù/˜Åc˜üÀ6ÃÍÎÏ Íù/ Πc cˆ¢cµ
 `£c¤… `à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•­¡žš¢‰ÄäÈ£LocationÁDÑ•½¤ëž¦¹ \ö«§Ô¨¨Œbê,yÛÝÊ̹»©«˜šœ¬ФÅrãbdSUDF„¬»º„™Üµ
ªªç0¹”仺„ÑÜÈ
¬¬ç0ó4‡®Œ¹Ã®
¯®¯‘ðü¹h®‘ð‘ð°°°ÇüÕF™ðÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ 
 
å·®®
°™ð
üÆ/
²²Þ0³°³ËüŠ7DÞ0Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙÞ0±±
³
$¼à
µµ€1¶°åüŒ7D€1긴´

̼¹º¹¸ºüÜ.ÐÑÒ Ð1 Ñ­­Á¯ °êOŽ1ì&çPÒ· ç·
¸ ô»¾ÓÔÕ Ó1 Ôššžœ Àž¹ ŸÌ šòè+O|ì\Õ€1· ·
¹ |„ ,‡ Ö Ö1€1· ·
ºüí ¹×ØÙÚÛÜÝäÈäÈ‰ÄæÈœÄ `çÈÀ `üöMõô]Td×·$ Ø ÙÎý •½•½÷²—½filenameÁ¯V˜½š¯V™½colÁ¯Vš½ _filenameÁ¯VirBð¸tý–ÚÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ Û