Merge "Update tracing to 0.1.41" into main
diff --git a/crates/tracing/.android-checksum.json b/crates/tracing/.android-checksum.json
index bbf0610..2e0a0d1 100644
--- a/crates/tracing/.android-checksum.json
+++ b/crates/tracing/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"f5dcc41dbbff7b7ee26a24c1cea3af9771aa19422f002b83fb4a75c1a143719d","Android.bp":"89c7bdc670500be6da0cdb45715b9cf25477c9145a612d1442b04ae0590f2486","CHANGELOG.md":"83d1f01bedb24102a630698ad8f37fd98622096411c31c2f8e9706e782da3d28","Cargo.toml":"6745f850b0f32e4484d3b37d4b0740c7cb841b42ecd5e35b394be8e8d06d3b3c","LICENSE":"81b5afff24bf73e7d6660ff9e03a493ba57f494dad837134a654b3945a3199d7","METADATA":"aa5d42841b8ef7e87b526623309bab410c964d5e17d1ba5061a86af968b49a1b","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"2ea85e52967c6009ec9b14a38915c227bddbc4f20c451741d058c00a2472a346","benches/baseline.rs":"c7a2ecdb72fea8f9161ec12f3f8bb4a3108ab65dada9101431124cd383930e96","benches/dispatch_get_clone.rs":"7f9b901641eaf78c3b691036e84b25a6fdd2cfb4dbe0d6cf1939b3f872aad155","benches/dispatch_get_ref.rs":"d0a7adaf237e585a9e850f207d32bf358b91cf2702e9c17084d189e1ed4eda5c","benches/empty_span.rs":"eb214ec80a601dd7deec54109a9921bdc76e91d788412a8dd626cc55ba8a982d","benches/enter_span.rs":"424baadd508d8cbb3df4cd828f0d3b98e17cf29d897df42b6e30d71e3ab3239e","benches/event.rs":"f4e6a10225e162693cc30017bab847b647ce78bf403898bd2c1d9bcca48c3cb4","benches/shared.rs":"ffa86d1edea3b645a52eb8c519bb25c1868aae8da34c1c5ae88da559cdf94a57","benches/span_fields.rs":"3f8dabb263a914e00be25f907d6759b3a9f6516fb8a882893a3184df940e514b","benches/span_no_fields.rs":"d30b7664b9a9b100c77b68fb8584aca093fa4b41d69b53b37dccbea366e1c60a","benches/span_repeated.rs":"11db6c7f458e3e83e997fdcd22113d68d3016ba0c53e02b610600def434a3cc5","cargo_embargo.json":"862f3402e4541b7985c935104f2a607ee0fb5c0501c620611f8b47377a90b50d","src/dispatcher.rs":"6428903c6b66fe0f4f7105791f09d588c35cbe00ec864c0dd064c478eca900be","src/field.rs":"b7ea1a84b3fc4103a8f787bb400146ef71cab5f689e087ac961ab7dd1fada005","src/instrument.rs":"7f2528c2fcbeeb21c51a8af695583293e96af59a02a3c3b9406aa2f874b320e9","src/level_filters.rs":"e051513fc7f2a5a4e56c4fe86ceda80cb0395a5ccba6e49dc95b1aca2f612579","src/lib.rs":"8ecad32048ffe0f42853b6812dcdcd685a074db9e7ead55dbaa465d9b4b2ccaa","src/macros.rs":"c4784cd867c8e85c45a285dd00ad5fda5d4add11f8186692eae232133fabbf1b","src/span.rs":"28cb2843b76911e93017da4e969af8916602b5e450006154cd7c736295963a88","src/stdlib.rs":"db6b63e680c9285e1b30a5234c6b14a1e53f2ad4c41aa5fb582da33f07229af6","src/subscriber.rs":"a60aa85e9d41203ae2c68a1e11d5b3361f905ac1892ac56142159c3f87a02537","tests/enabled.rs":"087c65298c599c433db41c1e501d254d5a9c7e735f48a304131b1eadf80bbe4e","tests/event.rs":"22429e5a08cab80a82b4077438341ca333f5e296d665f221800513dcdb019cd4","tests/filter_caching_is_lexically_scoped.rs":"dc6b5cf37a3a9871a9744bb822087b5b94dd835c0472ef5f9b5a649b66779a4b","tests/filters_are_not_reevaluated_for_the_same_span.rs":"605efca02f1940b31927a4a388a21b76b5e834ac91ccf4943e5be17c9a170e7d","tests/filters_are_reevaluated_for_different_call_sites.rs":"5ff455da8ca7c08cb003bb24db43f781fd38010a45923aa9bdddb6f829beca72","tests/filters_dont_leak.rs":"09b12fa51c0d6f033d000b63215040b3e71c4351cc9ec08c81af0db414c106d5","tests/future_send.rs":"b88303ec21941a99db4ac7b8cfa1713c902df76ff3758ca3cc0a57807d76c3e5","tests/instrument.rs":"c0c70bb12415e49863c22ec1353ddd061cff5138c86978b99e8089d082588359","tests/macro_imports.rs":"21e2a293e400251273988178aad6ff0598fc5e7b5d76c8f0365777757438cc45","tests/macros.rs":"2a0f6868edaa84037fc0bba4ef7cb2d69abf9b477286068b4285a8b9ab6fee17","tests/macros_incompatible_concat.rs":"8ea190ebcc2b48ee079da79a4c9307925d161b4ae23cb49176de3da76dae80be","tests/max_level_hint.rs":"8e4a8c350e8a3bbbef459a6a4b79c09efa6f93064480830cf610ae8053fb749f","tests/multiple_max_level_hints.rs":"ed06f9924a612c72696319bb0845948c571760063e311008b4be559930169820","tests/no_subscriber.rs":"06ff5c207971a4b902489d87c76df6a9c353cc67760d47e8a459173ca3b9f96f","tests/register_callsite_deadlock.rs":"6e4915c321e9d50e54d556592e54c76d8d9b89e8e8f99f5b3856d30cadf60357","tests/scoped_clobbers_default.rs":"564b1ba437bdd22315d6597403540a884ef90e5227060f7925f50cd5e7b2b0f9","tests/span.rs":"97666a8561bb7fc0a02ab82db9b7481ee80f863b9f467a5e5f891b13137e8de0","tests/subscriber.rs":"95b0a92b1edf37e8c6af766bfc4833824df52f06d987ff3f0facefafa07dcb84"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"a903fa50d9ea75ee3f6cbb423c42244fca6f245c1c54907e4b4fca9f7a5a01ae","Android.bp":"139dd9b29e4b69e211f786e6733e66aa4a7045b530da1fd1567160ee2972b6ec","CHANGELOG.md":"3820ece64599fecff28ebf27bfd4544a160f20b292dd01746d8c10322eb15916","Cargo.toml":"0a98a9bce5b8d7b0159b9a46dfa400e8b2ab38f64fd1e0932ac3547f89293990","LICENSE":"81b5afff24bf73e7d6660ff9e03a493ba57f494dad837134a654b3945a3199d7","METADATA":"08635ba5c4060353da6c5d872356b506d1991f28a04aea7da9ab21622735d897","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"56830f1adde979de325afc5c6e63eb8587820e5d9914c978923d250bad2c74f3","benches/baseline.rs":"c7a2ecdb72fea8f9161ec12f3f8bb4a3108ab65dada9101431124cd383930e96","benches/dispatch_get_clone.rs":"7f9b901641eaf78c3b691036e84b25a6fdd2cfb4dbe0d6cf1939b3f872aad155","benches/dispatch_get_ref.rs":"d0a7adaf237e585a9e850f207d32bf358b91cf2702e9c17084d189e1ed4eda5c","benches/empty_span.rs":"eb214ec80a601dd7deec54109a9921bdc76e91d788412a8dd626cc55ba8a982d","benches/enter_span.rs":"424baadd508d8cbb3df4cd828f0d3b98e17cf29d897df42b6e30d71e3ab3239e","benches/event.rs":"f4e6a10225e162693cc30017bab847b647ce78bf403898bd2c1d9bcca48c3cb4","benches/shared.rs":"ffa86d1edea3b645a52eb8c519bb25c1868aae8da34c1c5ae88da559cdf94a57","benches/span_fields.rs":"3f8dabb263a914e00be25f907d6759b3a9f6516fb8a882893a3184df940e514b","benches/span_no_fields.rs":"d30b7664b9a9b100c77b68fb8584aca093fa4b41d69b53b37dccbea366e1c60a","benches/span_repeated.rs":"11db6c7f458e3e83e997fdcd22113d68d3016ba0c53e02b610600def434a3cc5","cargo_embargo.json":"862f3402e4541b7985c935104f2a607ee0fb5c0501c620611f8b47377a90b50d","src/dispatcher.rs":"6428903c6b66fe0f4f7105791f09d588c35cbe00ec864c0dd064c478eca900be","src/field.rs":"b7ea1a84b3fc4103a8f787bb400146ef71cab5f689e087ac961ab7dd1fada005","src/instrument.rs":"7f2528c2fcbeeb21c51a8af695583293e96af59a02a3c3b9406aa2f874b320e9","src/level_filters.rs":"e051513fc7f2a5a4e56c4fe86ceda80cb0395a5ccba6e49dc95b1aca2f612579","src/lib.rs":"9238b7ec3e6da493e23713ed2d2bfdd02debe22f35253a43115aa6912b96a54d","src/macros.rs":"95caf438e46177f16ec14c862aecac58067e2d486a6fd4ebaea96f3be251805d","src/span.rs":"2cecd85243746c1157055ca72759dd27918be9a708c3db15288ff21c2077e581","src/stdlib.rs":"db6b63e680c9285e1b30a5234c6b14a1e53f2ad4c41aa5fb582da33f07229af6","src/subscriber.rs":"a60aa85e9d41203ae2c68a1e11d5b3361f905ac1892ac56142159c3f87a02537","tests/enabled.rs":"68fd024e00f9e352ae6fd2e1a1b78326aa9497d354ed39da07cfb1fb762fc4ff","tests/event.rs":"082473fa3cf9985044cb051618ffa2dc2ee69a0d0423b7ff7d5ab35999efb18e","tests/filter_caching_is_lexically_scoped.rs":"dc6b5cf37a3a9871a9744bb822087b5b94dd835c0472ef5f9b5a649b66779a4b","tests/filters_are_not_reevaluated_for_the_same_span.rs":"605efca02f1940b31927a4a388a21b76b5e834ac91ccf4943e5be17c9a170e7d","tests/filters_are_reevaluated_for_different_call_sites.rs":"5ff455da8ca7c08cb003bb24db43f781fd38010a45923aa9bdddb6f829beca72","tests/filters_dont_leak.rs":"09b12fa51c0d6f033d000b63215040b3e71c4351cc9ec08c81af0db414c106d5","tests/future_send.rs":"b88303ec21941a99db4ac7b8cfa1713c902df76ff3758ca3cc0a57807d76c3e5","tests/instrument.rs":"e03a0219fdab3e8d079217131d46dcc9dacb63f8a8d80a3f1ffc3bf86d32460c","tests/macro_imports.rs":"21e2a293e400251273988178aad6ff0598fc5e7b5d76c8f0365777757438cc45","tests/macros.rs":"2ab4495fab861baad4aa18879ccc38d0c6be22d52aa20a62be6787fe4630d22a","tests/macros_incompatible_concat.rs":"8ea190ebcc2b48ee079da79a4c9307925d161b4ae23cb49176de3da76dae80be","tests/max_level_hint.rs":"8e4a8c350e8a3bbbef459a6a4b79c09efa6f93064480830cf610ae8053fb749f","tests/missed_register_callsite.rs":"ce18308700d928cf0db5572c6456fa240e48ac8692c300d1ce6af89ab1fd398f","tests/multiple_max_level_hints.rs":"ed06f9924a612c72696319bb0845948c571760063e311008b4be559930169820","tests/no_subscriber.rs":"06ff5c207971a4b902489d87c76df6a9c353cc67760d47e8a459173ca3b9f96f","tests/register_callsite_deadlock.rs":"6e4915c321e9d50e54d556592e54c76d8d9b89e8e8f99f5b3856d30cadf60357","tests/scoped_clobbers_default.rs":"d2facc4119bcfc11c3f2d190263f377058ce2888e02456c1c1a6a4df1eb20b4d","tests/span.rs":"dedcc71df91790f3835945d3a051f021db11e2d4382a0c1491be909116e9aec9","tests/subscriber.rs":"be0f5ae5bc923a62c73eb01908ff9aa614ff98fa5f5e770f349bd2fc44a18893"}}
\ No newline at end of file
diff --git a/crates/tracing/.cargo-checksum.json b/crates/tracing/.cargo-checksum.json
index 92c7ecf..a22e4ee 100644
--- a/crates/tracing/.cargo-checksum.json
+++ b/crates/tracing/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"CHANGELOG.md":"8f2a5e3f70b90ef91e724b0089f511f6ce95cc6afaf1da30d3d486e30935c520","Cargo.toml":"e8262bfd368f8b9c2f902db368a71da88f446584167392a2611b8eb08e411175","LICENSE":"898b1ae9821e98daf8964c8d6c7f61641f5f5aa78ad500020771c0939ee0dea1","README.md":"baed1881843d68618241ccc57e2120993f6eb67c0e1987115b6855f7d328def3","benches/baseline.rs":"43a3e31b6c33dba2e6328052301b707b212487b83f0dcffc843061a9c48a2319","benches/dispatch_get_clone.rs":"866239abeb74a82440741c948a4e7e0a44e92e8cc87319ec57e3b057c9e8f5dd","benches/dispatch_get_ref.rs":"dd2803259a6784c256304e676bbce05de233e4c8451ac85863787213343e9be7","benches/empty_span.rs":"9f51cf376414ea751b2f50c357f2435a545d606118286f5b8b89f185e28aad8c","benches/enter_span.rs":"4410ec73d277e7b54e9f306c00ff3b79a150d1832966b7fc29984c8e3ad8d57c","benches/event.rs":"98de3c82ed18abe0a3cbe6eda9a4f9deec2b69bca42c3aac11dea4b608b85a67","benches/shared.rs":"2623311af7d153685064e664a5903d03e7dc3179754c324f3a76f29f060515e6","benches/span_fields.rs":"9166cd43ef2783e5419dd61ea57a02e48e8cc38aa1b357e9b79fa581929b60d8","benches/span_no_fields.rs":"79cc4befacf27d7ce728246087c4f06a6066f913e831d9043caeb7941f0193f6","benches/span_repeated.rs":"e4b3c99a7a9fc15d9042b8db399a56cf647b4eebd26f29d95325bb057b68330b","src/dispatcher.rs":"a8732392ffe56b1178f8fd3d6e6e02d40b51475c38bb4600abd9cd170df1bf6c","src/field.rs":"fe6c2eb36f92880254a707a465f873ca84510d93f06614b9b36ba20b48bf209d","src/instrument.rs":"034b1c7e46ab2fae331ea215a3d1b1a2211ef6b18d7e7113523e3ef5bf3ca9bb","src/level_filters.rs":"92aca5797a59b2f3c34adfb896260400c2602456eec0fe9c7d49204df37ff699","src/lib.rs":"54a1168ed65d746ce1cc6668a78931131af2afc7e0530391dcffcaa58a9f7971","src/macros.rs":"6ffcbea4b4b402b46e9e074f0808fb755b59ce2bb1c97aa4acdfdb31bb26bf4c","src/span.rs":"4efa37a8fc7604fcc3547eac488122c13bcb28e136f46381082480e0036217a0","src/stdlib.rs":"248514a9bae6106e436358aee44c92abf8e7f79022895c4a25136ddef211d198","src/subscriber.rs":"8933d8766439f929c0a98a0863d20aff37b221314b3825edd9058be511149968","tests/enabled.rs":"a80fd3c70be439b0d1d2509b46a2b9ca31748aab4341f67d0fa721f32c6a65a1","tests/event.rs":"d3c6d688fc1938516770a9fb486252bbe8e95f24b37097a2291e7119b6e78373","tests/filter_caching_is_lexically_scoped.rs":"5487a37db5fbdf3d57020ab1f01185d928c45d967d99d723ffc434540459d8dc","tests/filters_are_not_reevaluated_for_the_same_span.rs":"251abbc000dddd298448958a1f0e5be71da527ac6c1a368d57837c83a5467329","tests/filters_are_reevaluated_for_different_call_sites.rs":"e0fdd8e930c043674702831b4d96f331e63aba824576bbac50b3f53bb0241cc7","tests/filters_dont_leak.rs":"6c41d3209cf2a37a1656a8314399777022ceec556e44f5417f1f5a4cd24eb43a","tests/future_send.rs":"3e9c9193219d12e342c18bbedb2f6ec940334202feb3cffba91601d6001b8575","tests/instrument.rs":"e46cf30db3ff0174e4e0885720b97531c56cbe7d05bb4580e38790f272856b56","tests/macro_imports.rs":"d5de857162185d4a2384f3cb644bfcf76c7f5c1a3b5f72bfa0d2620ac6e3873c","tests/macros.rs":"acb6987a37be2035cde28c8a6b3cecbdbffffafebe6c007712cd145afbd1beb8","tests/macros_incompatible_concat.rs":"5f3bcbb65e4ae39db1cfc2def62fc913c20bab0fb769c8f731504e2615585ee5","tests/max_level_hint.rs":"39576a958df3ea215c49154ff72c3dd14c8b3be3fcdb849e7dd847c8c9fd09e2","tests/multiple_max_level_hints.rs":"28ead97a8424358a0632547dae987ddbddc5bb69cdcd996d20feb49a7f3ddc69","tests/no_subscriber.rs":"ca42d0d4a20eb3b4e0a342b5e0090c7ada8b5a157f3cddb7b5d051238cdc1202","tests/register_callsite_deadlock.rs":"c0b3142543e7a10065c7583a8ee0b6bc978ea4f3979599651101c5a28966e7c8","tests/scoped_clobbers_default.rs":"5fd48ff207df64b0e2ee443de75da0d8bd3b0817c6d9b003b0b00157ec244d7b","tests/span.rs":"2a5a8c666c8a2b51a1a1222e6046a1067690f039d15ef8b56d0e83bffa76f78d","tests/subscriber.rs":"ed3c02e8a75c6e4fc187a024fde6319e6d1ea95c993eda3fd9d559fd41fe7cce"},"package":"c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef"}
\ No newline at end of file
+{"files":{"CHANGELOG.md":"e41336be068976091df56bff671d38042286b776bbeb087f4bf6f4e85631cb81","Cargo.toml":"6c23bca19dcda69692ad102f2c395d5f098635cdcd27091c467837251827522f","LICENSE":"898b1ae9821e98daf8964c8d6c7f61641f5f5aa78ad500020771c0939ee0dea1","README.md":"0293821b9246c4b1a74211b74f2ce9655951931b8411eb365dced29a4ef46af5","benches/baseline.rs":"43a3e31b6c33dba2e6328052301b707b212487b83f0dcffc843061a9c48a2319","benches/dispatch_get_clone.rs":"866239abeb74a82440741c948a4e7e0a44e92e8cc87319ec57e3b057c9e8f5dd","benches/dispatch_get_ref.rs":"dd2803259a6784c256304e676bbce05de233e4c8451ac85863787213343e9be7","benches/empty_span.rs":"9f51cf376414ea751b2f50c357f2435a545d606118286f5b8b89f185e28aad8c","benches/enter_span.rs":"4410ec73d277e7b54e9f306c00ff3b79a150d1832966b7fc29984c8e3ad8d57c","benches/event.rs":"98de3c82ed18abe0a3cbe6eda9a4f9deec2b69bca42c3aac11dea4b608b85a67","benches/shared.rs":"2623311af7d153685064e664a5903d03e7dc3179754c324f3a76f29f060515e6","benches/span_fields.rs":"9166cd43ef2783e5419dd61ea57a02e48e8cc38aa1b357e9b79fa581929b60d8","benches/span_no_fields.rs":"79cc4befacf27d7ce728246087c4f06a6066f913e831d9043caeb7941f0193f6","benches/span_repeated.rs":"e4b3c99a7a9fc15d9042b8db399a56cf647b4eebd26f29d95325bb057b68330b","src/dispatcher.rs":"a8732392ffe56b1178f8fd3d6e6e02d40b51475c38bb4600abd9cd170df1bf6c","src/field.rs":"fe6c2eb36f92880254a707a465f873ca84510d93f06614b9b36ba20b48bf209d","src/instrument.rs":"034b1c7e46ab2fae331ea215a3d1b1a2211ef6b18d7e7113523e3ef5bf3ca9bb","src/level_filters.rs":"92aca5797a59b2f3c34adfb896260400c2602456eec0fe9c7d49204df37ff699","src/lib.rs":"7a934a9dcec4f847c2b1534f49417dba2068050af017a857e12b660ac06f9a6f","src/macros.rs":"ba1df10032f8832536dfdd43e567dc0e260d8679fea30ccf68061bc58f9e1cce","src/span.rs":"8c5cce0ab990960c5e7bc0dd99dd9eefde6d8d2477e98c39f17dffa9170c4185","src/stdlib.rs":"248514a9bae6106e436358aee44c92abf8e7f79022895c4a25136ddef211d198","src/subscriber.rs":"8933d8766439f929c0a98a0863d20aff37b221314b3825edd9058be511149968","tests/enabled.rs":"e19d039cf0e984918838aaab9d8b3ca5a1eea9d01a54a264a70184b440a9e880","tests/event.rs":"f51b286c1224346f96f38bee6bed9c4eac5e6405f269e90b770ebfb370820fa1","tests/filter_caching_is_lexically_scoped.rs":"5487a37db5fbdf3d57020ab1f01185d928c45d967d99d723ffc434540459d8dc","tests/filters_are_not_reevaluated_for_the_same_span.rs":"251abbc000dddd298448958a1f0e5be71da527ac6c1a368d57837c83a5467329","tests/filters_are_reevaluated_for_different_call_sites.rs":"e0fdd8e930c043674702831b4d96f331e63aba824576bbac50b3f53bb0241cc7","tests/filters_dont_leak.rs":"6c41d3209cf2a37a1656a8314399777022ceec556e44f5417f1f5a4cd24eb43a","tests/future_send.rs":"3e9c9193219d12e342c18bbedb2f6ec940334202feb3cffba91601d6001b8575","tests/instrument.rs":"a3ee726247d897ad2af8123e6d44abce1a43a72ccbc3fd479257f810d8cbbbb2","tests/macro_imports.rs":"d5de857162185d4a2384f3cb644bfcf76c7f5c1a3b5f72bfa0d2620ac6e3873c","tests/macros.rs":"71474339414ff573471de125f2d369da8caffbfe47fa2e9a18f2e87de20d2a79","tests/macros_incompatible_concat.rs":"5f3bcbb65e4ae39db1cfc2def62fc913c20bab0fb769c8f731504e2615585ee5","tests/max_level_hint.rs":"39576a958df3ea215c49154ff72c3dd14c8b3be3fcdb849e7dd847c8c9fd09e2","tests/missed_register_callsite.rs":"3211f0f030c9baf6333abf709d6520ced25619ee82cdf88a4e6ba8e1aff12296","tests/multiple_max_level_hints.rs":"28ead97a8424358a0632547dae987ddbddc5bb69cdcd996d20feb49a7f3ddc69","tests/no_subscriber.rs":"ca42d0d4a20eb3b4e0a342b5e0090c7ada8b5a157f3cddb7b5d051238cdc1202","tests/register_callsite_deadlock.rs":"c0b3142543e7a10065c7583a8ee0b6bc978ea4f3979599651101c5a28966e7c8","tests/scoped_clobbers_default.rs":"a7615615d176fb2a4b877c48d2aa7a75fca436d997d9672b56cc2c30177f889b","tests/span.rs":"91995aa0f59b09a6230ec146abcafce5710e6657159e4b6f47a56fb6ec76be8c","tests/subscriber.rs":"2da999bedb978bab019a70ccc9fdd43b062ec2e383af1e7c5b780df23adc219b"},"package":"784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0"}
\ No newline at end of file
diff --git a/crates/tracing/Android.bp b/crates/tracing/Android.bp
index 0e003d3..145d826 100644
--- a/crates/tracing/Android.bp
+++ b/crates/tracing/Android.bp
@@ -18,7 +18,7 @@
host_supported: true,
crate_name: "tracing",
cargo_env_compat: true,
- cargo_pkg_version: "0.1.40",
+ cargo_pkg_version: "0.1.41",
crate_root: "src/lib.rs",
edition: "2018",
features: [
@@ -46,7 +46,7 @@
host_supported: true,
crate_name: "tracing",
cargo_env_compat: true,
- cargo_pkg_version: "0.1.40",
+ cargo_pkg_version: "0.1.41",
crate_root: "src/lib.rs",
edition: "2018",
features: [
diff --git a/crates/tracing/CHANGELOG.md b/crates/tracing/CHANGELOG.md
index db1668b..0c9f5f4 100644
--- a/crates/tracing/CHANGELOG.md
+++ b/crates/tracing/CHANGELOG.md
@@ -1,4 +1,57 @@
-# 0.1.40
+# 0.1.41 (November 27, 2024)
+
+[ [crates.io][crate-0.1.41] ] | [ [docs.rs][docs-0.1.41] ]
+
+This release updates the `tracing-core` dependency to [v0.1.33][core-0.1.33] and
+the `tracing-attributes` dependency to [v0.1.28][attrs-0.1.28].
+
+### Added
+
+- **core**: Add index API for `Field` ([#2820])
+- **core**: Allow `&[u8]` to be recorded as event/span field ([#2954])
+
+### Changed
+
+- Bump MSRV to 1.63 ([#2793])
+- **core**: Use const `thread_local`s when possible ([#2838])
+
+### Fixed
+
+- Removed core imports in macros ([#2762])
+- **attributes**: Added missing RecordTypes for instrument ([#2781])
+- **attributes**: Change order of async and unsafe modifier ([#2864])
+- Fix missing field prefixes ([#2878])
+- **attributes**: Extract match scrutinee ([#2880])
+- Fix non-simple macro usage without message ([#2879])
+- Fix event macros with constant field names in the first position ([#2883])
+- Allow field path segments to be keywords ([#2925])
+- **core**: Fix missed `register_callsite` error ([#2938])
+- **attributes**: Support const values for `target` and `name` ([#2941])
+- Prefix macro calls with ::core to avoid clashing with local macros ([#3024])
+
+[#2762]: https://github.com/tokio-rs/tracing/pull/2762
+[#2781]: https://github.com/tokio-rs/tracing/pull/2781
+[#2793]: https://github.com/tokio-rs/tracing/pull/2793
+[#2820]: https://github.com/tokio-rs/tracing/pull/2820
+[#2838]: https://github.com/tokio-rs/tracing/pull/2838
+[#2864]: https://github.com/tokio-rs/tracing/pull/2864
+[#2878]: https://github.com/tokio-rs/tracing/pull/2878
+[#2879]: https://github.com/tokio-rs/tracing/pull/2879
+[#2880]: https://github.com/tokio-rs/tracing/pull/2880
+[#2883]: https://github.com/tokio-rs/tracing/pull/2883
+[#2925]: https://github.com/tokio-rs/tracing/pull/2925
+[#2938]: https://github.com/tokio-rs/tracing/pull/2938
+[#2941]: https://github.com/tokio-rs/tracing/pull/2941
+[#2954]: https://github.com/tokio-rs/tracing/pull/2954
+[#3024]: https://github.com/tokio-rs/tracing/pull/3024
+[attrs-0.1.28]:
+ https://github.com/tokio-rs/tracing/releases/tag/tracing-attributes-0.1.28
+[core-0.1.33]:
+ https://github.com/tokio-rs/tracing/releases/tag/tracing-core-0.1.33
+[docs-0.1.41]: https://docs.rs/tracing/0.1.41/tracing/
+[crate-0.1.41]: https://crates.io/crates/tracing/0.1.41
+
+# 0.1.40 (October 19, 2023)
This release fixes a potential stack use-after-free in the
`Instrument::into_inner` method. Only uses of this method are affected by this
@@ -651,7 +704,7 @@
filtering, improving performance when a span or event is disabled by a
`static_max_level_XXX` feature flag (#868)
- `LevelFilter` is now a re-export of the `tracing_core::LevelFilter` type, it
- can now be used interchangably with the versions in `tracing-core` and
+ can now be used interchangeably with the versions in `tracing-core` and
`tracing-subscriber` (#853)
- Significant performance improvements when comparing `LevelFilter`s and
`Level`s (#853)
diff --git a/crates/tracing/Cargo.toml b/crates/tracing/Cargo.toml
index 1143cd6..e71eb5f 100644
--- a/crates/tracing/Cargo.toml
+++ b/crates/tracing/Cargo.toml
@@ -11,13 +11,18 @@
[package]
edition = "2018"
-rust-version = "1.56.0"
+rust-version = "1.63.0"
name = "tracing"
-version = "0.1.40"
+version = "0.1.41"
authors = [
"Eliza Weisman <[email protected]>",
"Tokio Contributors <[email protected]>",
]
+build = false
+autobins = false
+autoexamples = false
+autotests = false
+autobenches = false
description = """
Application-level tracing for Rust.
"""
@@ -37,6 +42,7 @@
]
license = "MIT"
repository = "https://github.com/tokio-rs/tracing"
+resolver = "2"
[package.metadata.docs.rs]
all-features = true
@@ -51,40 +57,133 @@
"tracing_unstable",
]
+[lib]
+name = "tracing"
+path = "src/lib.rs"
+
+[[test]]
+name = "enabled"
+path = "tests/enabled.rs"
+
+[[test]]
+name = "event"
+path = "tests/event.rs"
+
+[[test]]
+name = "filter_caching_is_lexically_scoped"
+path = "tests/filter_caching_is_lexically_scoped.rs"
+
+[[test]]
+name = "filters_are_not_reevaluated_for_the_same_span"
+path = "tests/filters_are_not_reevaluated_for_the_same_span.rs"
+
+[[test]]
+name = "filters_are_reevaluated_for_different_call_sites"
+path = "tests/filters_are_reevaluated_for_different_call_sites.rs"
+
+[[test]]
+name = "filters_dont_leak"
+path = "tests/filters_dont_leak.rs"
+
+[[test]]
+name = "future_send"
+path = "tests/future_send.rs"
+
+[[test]]
+name = "instrument"
+path = "tests/instrument.rs"
+
+[[test]]
+name = "macro_imports"
+path = "tests/macro_imports.rs"
+
+[[test]]
+name = "macros"
+path = "tests/macros.rs"
+
+[[test]]
+name = "macros_incompatible_concat"
+path = "tests/macros_incompatible_concat.rs"
+
+[[test]]
+name = "max_level_hint"
+path = "tests/max_level_hint.rs"
+
+[[test]]
+name = "missed_register_callsite"
+path = "tests/missed_register_callsite.rs"
+
+[[test]]
+name = "multiple_max_level_hints"
+path = "tests/multiple_max_level_hints.rs"
+
+[[test]]
+name = "no_subscriber"
+path = "tests/no_subscriber.rs"
+
+[[test]]
+name = "register_callsite_deadlock"
+path = "tests/register_callsite_deadlock.rs"
+
+[[test]]
+name = "scoped_clobbers_default"
+path = "tests/scoped_clobbers_default.rs"
+
+[[test]]
+name = "span"
+path = "tests/span.rs"
+
+[[test]]
+name = "subscriber"
+path = "tests/subscriber.rs"
+
[[bench]]
name = "baseline"
+path = "benches/baseline.rs"
harness = false
[[bench]]
name = "dispatch_get_clone"
+path = "benches/dispatch_get_clone.rs"
harness = false
[[bench]]
name = "dispatch_get_ref"
+path = "benches/dispatch_get_ref.rs"
harness = false
[[bench]]
name = "empty_span"
+path = "benches/empty_span.rs"
harness = false
[[bench]]
name = "enter_span"
+path = "benches/enter_span.rs"
harness = false
[[bench]]
name = "event"
+path = "benches/event.rs"
harness = false
[[bench]]
+name = "shared"
+path = "benches/shared.rs"
+
+[[bench]]
name = "span_fields"
+path = "benches/span_fields.rs"
harness = false
[[bench]]
name = "span_no_fields"
+path = "benches/span_no_fields.rs"
harness = false
[[bench]]
name = "span_repeated"
+path = "benches/span_repeated.rs"
harness = false
[dependencies.log]
@@ -95,20 +194,20 @@
version = "0.2.9"
[dependencies.tracing-attributes]
-version = "0.1.27"
+version = "0.1.28"
optional = true
[dependencies.tracing-core]
-version = "0.1.32"
+version = "0.1.33"
default-features = false
[dev-dependencies.criterion]
version = "0.3.6"
-default_features = false
+default-features = false
[dev-dependencies.futures]
version = "0.3.21"
-default_features = false
+default-features = false
[dev-dependencies.log]
version = "0.4.17"
@@ -136,8 +235,16 @@
std = ["tracing-core/std"]
valuable = ["tracing-core/valuable"]
-[target."cfg(target_arch = \"wasm32\")".dev-dependencies.wasm-bindgen-test]
-version = "^0.3"
+[target.'cfg(target_arch = "wasm32")'.dev-dependencies.wasm-bindgen-test]
+version = "0.3.38"
[badges.maintenance]
status = "actively-developed"
+
+[lints.rust.unexpected_cfgs]
+level = "warn"
+priority = 0
+check-cfg = [
+ "cfg(flaky_tests)",
+ "cfg(tracing_unstable)",
+]
diff --git a/crates/tracing/METADATA b/crates/tracing/METADATA
index 8990ac4..3cc6f0c 100644
--- a/crates/tracing/METADATA
+++ b/crates/tracing/METADATA
@@ -1,17 +1,17 @@
name: "tracing"
description: "A scoped, structured logging and diagnostics system."
third_party {
- version: "0.1.40"
+ version: "0.1.41"
license_type: NOTICE
last_upgrade_date {
- year: 2024
- month: 2
- day: 6
+ year: 2025
+ month: 1
+ day: 15
}
homepage: "https://crates.io/crates/tracing"
identifier {
type: "Archive"
- value: "https://static.crates.io/crates/tracing/tracing-0.1.40.crate"
- version: "0.1.40"
+ value: "https://static.crates.io/crates/tracing/tracing-0.1.41.crate"
+ version: "0.1.41"
}
}
diff --git a/crates/tracing/README.md b/crates/tracing/README.md
index a42636f..0bd4208 100644
--- a/crates/tracing/README.md
+++ b/crates/tracing/README.md
@@ -47,7 +47,7 @@
The `tracing` crate provides the APIs necessary for instrumenting libraries
and applications to emit trace data.
-*Compiler support: [requires `rustc` 1.56+][msrv]*
+*Compiler support: [requires `rustc` 1.63+][msrv]*
[msrv]: #supported-rust-versions
@@ -145,7 +145,7 @@
// the `#[tracing::instrument]` attribute creates and enters a span
// every time the instrumented function is called. The span is named after the
-// the function or method. Paramaters passed to the function are recorded as fields.
+// the function or method. Parameters passed to the function are recorded as fields.
#[tracing::instrument]
pub fn shave(yak: usize) -> Result<(), Box<dyn Error + 'static>> {
// this creates an event at the DEBUG level with two fields:
@@ -185,7 +185,7 @@
if let Err(ref error) = res {
// Like spans, events can also use the field initialization shorthand.
- // In this instance, `yak` is the field being initalized.
+ // In this instance, `yak` is the field being initialized.
error!(yak, error = error.as_ref(), "failed to shave yak!");
} else {
yaks_shaved += 1;
@@ -250,7 +250,7 @@
is as long as the future's.
The second, and preferred, option is through the
-[`#[instrument]`](https://docs.rs/tracing/0.1.38/tracing/attr.instrument.html)
+[`#[instrument]`](https://docs.rs/tracing/0.1.41/tracing/attr.instrument.html)
attribute:
```rust
@@ -297,7 +297,7 @@
// Dropping the span will close it, indicating that it has ended.
```
-The [`#[instrument]`](https://docs.rs/tracing/0.1.38/tracing/attr.instrument.html) attribute macro
+The [`#[instrument]`](https://docs.rs/tracing/0.1.41/tracing/attr.instrument.html) attribute macro
can reduce some of this boilerplate:
```rust
@@ -397,6 +397,7 @@
- [`sentry-tracing`] provides a layer for reporting events and traces to [Sentry].
- [`tracing-loki`] provides a layer for shipping logs to [Grafana Loki].
- [`tracing-logfmt`] provides a layer that formats events and spans into the logfmt format.
+- [`json-subscriber`] provides a layer for emitting JSON logs. The output can be customized much more than with [`FmtSubscriber`]'s JSON output.
If you're the maintainer of a `tracing` ecosystem crate not listed above,
please let us know! We'd love to add your project to the list!
@@ -428,6 +429,7 @@
[`tracing-loki`]: https://crates.io/crates/tracing-loki
[Grafana Loki]: https://grafana.com/oss/loki/
[`tracing-logfmt`]: https://crates.io/crates/tracing-logfmt
+[`json-subscriber`]: https://crates.io/crates/json-subscriber
**Note:** that some of the ecosystem crates are currently unreleased and
undergoing active development. They may be less stable than `tracing` and
@@ -445,7 +447,7 @@
## Supported Rust Versions
Tracing is built against the latest stable release. The minimum supported
-version is 1.56. The current Tracing version is not guaranteed to build on Rust
+version is 1.63. The current Tracing version is not guaranteed to build on Rust
versions earlier than the minimum supported version.
Tracing follows the same compiler support policies as the rest of the Tokio
diff --git a/crates/tracing/src/lib.rs b/crates/tracing/src/lib.rs
index 258cbe5..8b6c7f0 100644
--- a/crates/tracing/src/lib.rs
+++ b/crates/tracing/src/lib.rs
@@ -19,7 +19,7 @@
//! The `tracing` crate provides the APIs necessary for instrumenting libraries
//! and applications to emit trace data.
//!
-//! *Compiler support: [requires `rustc` 1.56+][msrv]*
+//! *Compiler support: [requires `rustc` 1.63+][msrv]*
//!
//! [msrv]: #supported-rust-versions
//! # Core Concepts
@@ -173,7 +173,7 @@
//! For functions which don't have built-in tracing support and can't have
//! the `#[instrument]` attribute applied (such as from an external crate),
//! the [`Span` struct][`Span`] has a [`in_scope()` method][`in_scope`]
-//! which can be used to easily wrap synchonous code in a span.
+//! which can be used to easily wrap synchronous code in a span.
//!
//! For example:
//! ```rust
@@ -756,6 +756,7 @@
//! - [`reqwest-tracing`] provides a middleware to trace [`reqwest`] HTTP requests.
//! - [`tracing-cloudwatch`] provides a layer that sends events to AWS CloudWatch Logs.
//! - [`clippy-tracing`] provides a tool to add, remove and check for `tracing::instrument`.
+//! - [`json-subscriber`] provides a subscriber for emitting JSON logs. The output can be customized much more than with [`tracing-subscriber`]'s JSON output.
//!
//! If you're the maintainer of a `tracing` ecosystem crate not listed above,
//! please let us know! We'd love to add your project to the list!
@@ -799,6 +800,7 @@
//! [`reqwest`]: https://crates.io/crates/reqwest
//! [`tracing-cloudwatch`]: https://crates.io/crates/tracing-cloudwatch
//! [`clippy-tracing`]: https://crates.io/crates/clippy-tracing
+//! [`json-subscriber`]: https://crates.io/crates/json-subscriber
//!
//! <pre class="ignore" style="white-space:normal;font:inherit;">
//! <strong>Note</strong>: Some of these ecosystem crates are currently
@@ -871,7 +873,7 @@
//! ## Supported Rust Versions
//!
//! Tracing is built against the latest stable release. The minimum supported
-//! version is 1.56. The current Tracing version is not guaranteed to build on
+//! version is 1.63. The current Tracing version is not guaranteed to build on
//! Rust versions earlier than the minimum supported version.
//!
//! Tracing follows the same compiler support policies as the rest of the Tokio
@@ -929,7 +931,8 @@
overflowing_literals,
path_statements,
patterns_in_fns_without_body,
- private_in_public,
+ private_interfaces,
+ private_bounds,
unconditional_recursion,
unused,
unused_allocation,
@@ -984,7 +987,10 @@
pub mod __macro_support {
pub use crate::callsite::Callsite;
use crate::{subscriber::Interest, Metadata};
- pub use core::concat;
+ // Re-export the `core` functions that are used in macros. This allows
+ // a crate to be named `core` and avoid name clashes.
+ // See here: https://github.com/tokio-rs/tracing/issues/2761
+ pub use core::{concat, file, format_args, iter::Iterator, line, option::Option};
/// Callsite implementation used by macro-generated code.
///
diff --git a/crates/tracing/src/macros.rs b/crates/tracing/src/macros.rs
index dba49d1..156334a 100644
--- a/crates/tracing/src/macros.rs
+++ b/crates/tracing/src/macros.rs
@@ -627,7 +627,7 @@
target: $target,
parent: $parent,
$lvl,
- { message = ::core::format_args!($($arg)+), $($fields)* }
+ { message = $crate::__macro_support::format_args!($($arg)+), $($fields)* }
)
);
(name: $name:expr, target: $target:expr, parent: $parent:expr, $lvl:expr, $($k:ident).+ = $($fields:tt)* ) => (
@@ -678,7 +678,7 @@
name: $name,
target: $target,
$lvl,
- { message = ::core::format_args!($($arg)+), $($fields)* }
+ { message = $crate::__macro_support::format_args!($($arg)+), $($fields)* }
)
);
(name: $name:expr, target: $target:expr, $lvl:expr, $($k:ident).+ = $($fields:tt)* ) => (
@@ -694,9 +694,9 @@
static __CALLSITE: $crate::callsite::DefaultCallsite = $crate::callsite2! {
name: $crate::__macro_support::concat!(
"event ",
- file!(),
+ $crate::__macro_support::file!(),
":",
- line!()
+ $crate::__macro_support::line!()
),
kind: $crate::metadata::Kind::EVENT,
target: $target,
@@ -736,7 +736,7 @@
target: $target,
parent: $parent,
$lvl,
- { message = ::core::format_args!($($arg)+), $($fields)* }
+ { message = $crate::__macro_support::format_args!($($arg)+), $($fields)* }
)
);
(target: $target:expr, parent: $parent:expr, $lvl:expr, $($k:ident).+ = $($fields:tt)* ) => (
@@ -789,7 +789,7 @@
name: $name,
parent: $parent,
$lvl,
- { message = ::core::format_args!($($arg)+), $($fields)* }
+ { message = $crate::__macro_support::format_args!($($arg)+), $($fields)* }
)
);
(name: $name:expr, parent: $parent:expr, $lvl:expr, $($k:ident).+ = $($fields:tt)* ) => (
@@ -839,7 +839,7 @@
$crate::event!(
name: $name,
$lvl,
- { message = ::core::format_args!($($arg)+), $($fields)* }
+ { message = $crate::__macro_support::format_args!($($arg)+), $($fields)* }
)
);
(name: $name:expr, $lvl:expr, $($k:ident).+ = $($fields:tt)* ) => (
@@ -855,9 +855,9 @@
static __CALLSITE: $crate::callsite::DefaultCallsite = $crate::callsite2! {
name: $crate::__macro_support::concat!(
"event ",
- file!(),
+ $crate::__macro_support::file!(),
":",
- line!()
+ $crate::__macro_support::line!()
),
kind: $crate::metadata::Kind::EVENT,
target: $target,
@@ -894,7 +894,7 @@
$crate::event!(
target: $target,
$lvl,
- { message = ::core::format_args!($($arg)+), $($fields)* }
+ { message = $crate::__macro_support::format_args!($($arg)+), $($fields)* }
)
);
(target: $target:expr, $lvl:expr, $($k:ident).+ = $($fields:tt)* ) => (
@@ -910,7 +910,7 @@
target: module_path!(),
parent: $parent,
$lvl,
- { message = ::core::format_args!($($arg)+), $($fields)* }
+ { message = $crate::__macro_support::format_args!($($arg)+), $($fields)* }
)
);
(parent: $parent:expr, $lvl:expr, $($k:ident).+ = $($field:tt)*) => (
@@ -970,7 +970,7 @@
$crate::event!(
target: module_path!(),
$lvl,
- { message = ::core::format_args!($($arg)+), $($fields)* }
+ { message = $crate::__macro_support::format_args!($($arg)+), $($fields)* }
)
);
( $lvl:expr, { $($fields:tt)* }, $($arg:tt)+ ) => (
@@ -1117,15 +1117,15 @@
/// in false positives or false negatives include:
///
/// - If a subscriber is using a filter which may enable a span or event based
-/// on field names, but `enabled!` is invoked without listing field names,
-/// `enabled!` may return a false negative if a specific field name would
-/// cause the subscriber to enable something that would otherwise be disabled.
+/// on field names, but `enabled!` is invoked without listing field names,
+/// `enabled!` may return a false negative if a specific field name would
+/// cause the subscriber to enable something that would otherwise be disabled.
/// - If a subscriber is using a filter which enables or disables specific events by
-/// file path and line number, a particular event may be enabled/disabled
-/// even if an `enabled!` invocation with the same level, target, and fields
-/// indicated otherwise.
+/// file path and line number, a particular event may be enabled/disabled
+/// even if an `enabled!` invocation with the same level, target, and fields
+/// indicated otherwise.
/// - The subscriber can choose to enable _only_ spans or _only_ events, which `enabled`
-/// will not reflect.
+/// will not reflect.
///
/// `enabled!()` requires a [level](crate::Level) argument, an optional `target:`
/// argument, and an optional set of field names. If the fields are not provided,
@@ -1188,9 +1188,9 @@
static __CALLSITE: $crate::callsite::DefaultCallsite = $crate::callsite2! {
name: $crate::__macro_support::concat!(
"enabled ",
- file!(),
+ $crate::__macro_support::file!(),
":",
- line!()
+ $crate::__macro_support::line!()
),
kind: $kind.hint(),
target: $target,
@@ -1305,14 +1305,14 @@
(name: $name:expr, target: $target:expr, parent: $parent:expr, { $($field:tt)* }, $($arg:tt)* ) => (
$crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::TRACE, { $($field)* }, $($arg)*)
);
- (name: $name:expr, target: $target:expr, parent: $parent:expr, $($k:ident).+ $($field:tt)+ ) => (
- $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::TRACE, { $($k).+ $($field)+ })
+ (name: $name:expr, target: $target:expr, parent: $parent:expr, $($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::TRACE, { $($k).+ $($field)* })
);
- (name: $name:expr, target: $target:expr, parent: $parent:expr, ?$($k:ident).+ $($field:tt)+ ) => (
- $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::TRACE, { $($k).+ $($field)+ })
+ (name: $name:expr, target: $target:expr, parent: $parent:expr, ?$($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::TRACE, { ?$($k).+ $($field)* })
);
- (name: $name:expr, target: $target:expr, parent: $parent:expr, %$($k:ident).+ $($field:tt)+ ) => (
- $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::TRACE, { $($k).+ $($field)+ })
+ (name: $name:expr, target: $target:expr, parent: $parent:expr, %$($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::TRACE, { %$($k).+ $($field)* })
);
(name: $name:expr, target: $target:expr, parent: $parent:expr, $($arg:tt)+ ) => (
$crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::TRACE, {}, $($arg)+)
@@ -1322,14 +1322,14 @@
(name: $name:expr, target: $target:expr, { $($field:tt)* }, $($arg:tt)* ) => (
$crate::event!(name: $name, target: $target, $crate::Level::TRACE, { $($field)* }, $($arg)*)
);
- (name: $name:expr, target: $target:expr, $($k:ident).+ $($field:tt)+ ) => (
- $crate::event!(name: $name, target: $target, $crate::Level::TRACE, { $($k).+ $($field)+ })
+ (name: $name:expr, target: $target:expr, $($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(name: $name, target: $target, $crate::Level::TRACE, { $($k).+ $($field)* })
);
- (name: $name:expr, target: $target:expr, ?$($k:ident).+ $($field:tt)+ ) => (
- $crate::event!(name: $name, target: $target, $crate::Level::TRACE, { $($k).+ $($field)+ })
+ (name: $name:expr, target: $target:expr, ?$($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(name: $name, target: $target, $crate::Level::TRACE, { ?$($k).+ $($field)* })
);
- (name: $name:expr, target: $target:expr, %$($k:ident).+ $($field:tt)+ ) => (
- $crate::event!(name: $name, target: $target, $crate::Level::TRACE, { $($k).+ $($field)+ })
+ (name: $name:expr, target: $target:expr, %$($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(name: $name, target: $target, $crate::Level::TRACE, { %$($k).+ $($field)* })
);
(name: $name:expr, target: $target:expr, $($arg:tt)+ ) => (
$crate::event!(name: $name, target: $target, $crate::Level::TRACE, {}, $($arg)+)
@@ -1339,14 +1339,14 @@
(target: $target:expr, parent: $parent:expr, { $($field:tt)* }, $($arg:tt)* ) => (
$crate::event!(target: $target, parent: $parent, $crate::Level::TRACE, { $($field)* }, $($arg)*)
);
- (target: $target:expr, parent: $parent:expr, $($k:ident).+ $($field:tt)+ ) => (
- $crate::event!(target: $target, parent: $parent, $crate::Level::TRACE, { $($k).+ $($field)+ })
+ (target: $target:expr, parent: $parent:expr, $($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(target: $target, parent: $parent, $crate::Level::TRACE, { $($k).+ $($field)* })
);
- (target: $target:expr, parent: $parent:expr, ?$($k:ident).+ $($field:tt)+ ) => (
- $crate::event!(target: $target, parent: $parent, $crate::Level::TRACE, { $($k).+ $($field)+ })
+ (target: $target:expr, parent: $parent:expr, ?$($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(target: $target, parent: $parent, $crate::Level::TRACE, { ?$($k).+ $($field)* })
);
- (target: $target:expr, parent: $parent:expr, %$($k:ident).+ $($field:tt)+ ) => (
- $crate::event!(target: $target, parent: $parent, $crate::Level::TRACE, { $($k).+ $($field)+ })
+ (target: $target:expr, parent: $parent:expr, %$($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(target: $target, parent: $parent, $crate::Level::TRACE, { %$($k).+ $($field)* })
);
(target: $target:expr, parent: $parent:expr, $($arg:tt)+ ) => (
$crate::event!(target: $target, parent: $parent, $crate::Level::TRACE, {}, $($arg)+)
@@ -1356,14 +1356,14 @@
(name: $name:expr, parent: $parent:expr, { $($field:tt)* }, $($arg:tt)* ) => (
$crate::event!(name: $name, parent: $parent, $crate::Level::TRACE, { $($field)* }, $($arg)*)
);
- (name: $name:expr, parent: $parent:expr, $($k:ident).+ $($field:tt)+ ) => (
- $crate::event!(name: $name, parent: $parent, $crate::Level::TRACE, { $($k).+ $($field)+ })
+ (name: $name:expr, parent: $parent:expr, $($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(name: $name, parent: $parent, $crate::Level::TRACE, { $($k).+ $($field)* })
);
- (name: $name:expr, parent: $parent:expr, ?$($k:ident).+ $($field:tt)+ ) => (
- $crate::event!(name: $name, parent: $parent, $crate::Level::TRACE, { $($k).+ $($field)+ })
+ (name: $name:expr, parent: $parent:expr, ?$($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(name: $name, parent: $parent, $crate::Level::TRACE, { ?$($k).+ $($field)* })
);
- (name: $name:expr, parent: $parent:expr, %$($k:ident).+ $($field:tt)+ ) => (
- $crate::event!(name: $name, parent: $parent, $crate::Level::TRACE, { $($k).+ $($field)+ })
+ (name: $name:expr, parent: $parent:expr, %$($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(name: $name, parent: $parent, $crate::Level::TRACE, { %$($k).+ $($field)* })
);
(name: $name:expr, parent: $parent:expr, $($arg:tt)+ ) => (
$crate::event!(name: $name, parent: $parent, $crate::Level::TRACE, {}, $($arg)+)
@@ -1547,7 +1547,6 @@
$crate::event!(
target: module_path!(),
$crate::Level::TRACE,
- {},
$($arg)+
)
);
@@ -1582,14 +1581,14 @@
(name: $name:expr, target: $target:expr, parent: $parent:expr, { $($field:tt)* }, $($arg:tt)* ) => (
$crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::DEBUG, { $($field)* }, $($arg)*)
);
- (name: $name:expr, target: $target:expr, parent: $parent:expr, $($k:ident).+ $($field:tt)+ ) => (
- $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::DEBUG, { $($k).+ $($field)+ })
+ (name: $name:expr, target: $target:expr, parent: $parent:expr, $($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::DEBUG, { $($k).+ $($field)* })
);
- (name: $name:expr, target: $target:expr, parent: $parent:expr, ?$($k:ident).+ $($field:tt)+ ) => (
- $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::DEBUG, { $($k).+ $($field)+ })
+ (name: $name:expr, target: $target:expr, parent: $parent:expr, ?$($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::DEBUG, { ?$($k).+ $($field)* })
);
- (name: $name:expr, target: $target:expr, parent: $parent:expr, %$($k:ident).+ $($field:tt)+ ) => (
- $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::DEBUG, { $($k).+ $($field)+ })
+ (name: $name:expr, target: $target:expr, parent: $parent:expr, %$($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::DEBUG, { %$($k).+ $($field)* })
);
(name: $name:expr, target: $target:expr, parent: $parent:expr, $($arg:tt)+ ) => (
$crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::DEBUG, {}, $($arg)+)
@@ -1599,14 +1598,14 @@
(name: $name:expr, target: $target:expr, { $($field:tt)* }, $($arg:tt)* ) => (
$crate::event!(name: $name, target: $target, $crate::Level::DEBUG, { $($field)* }, $($arg)*)
);
- (name: $name:expr, target: $target:expr, $($k:ident).+ $($field:tt)+ ) => (
- $crate::event!(name: $name, target: $target, $crate::Level::DEBUG, { $($k).+ $($field)+ })
+ (name: $name:expr, target: $target:expr, $($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(name: $name, target: $target, $crate::Level::DEBUG, { $($k).+ $($field)* })
);
- (name: $name:expr, target: $target:expr, ?$($k:ident).+ $($field:tt)+ ) => (
- $crate::event!(name: $name, target: $target, $crate::Level::DEBUG, { $($k).+ $($field)+ })
+ (name: $name:expr, target: $target:expr, ?$($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(name: $name, target: $target, $crate::Level::DEBUG, { ?$($k).+ $($field)* })
);
- (name: $name:expr, target: $target:expr, %$($k:ident).+ $($field:tt)+ ) => (
- $crate::event!(name: $name, target: $target, $crate::Level::DEBUG, { $($k).+ $($field)+ })
+ (name: $name:expr, target: $target:expr, %$($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(name: $name, target: $target, $crate::Level::DEBUG, { %$($k).+ $($field)* })
);
(name: $name:expr, target: $target:expr, $($arg:tt)+ ) => (
$crate::event!(name: $name, target: $target, $crate::Level::DEBUG, {}, $($arg)+)
@@ -1616,14 +1615,14 @@
(target: $target:expr, parent: $parent:expr, { $($field:tt)* }, $($arg:tt)* ) => (
$crate::event!(target: $target, parent: $parent, $crate::Level::DEBUG, { $($field)* }, $($arg)*)
);
- (target: $target:expr, parent: $parent:expr, $($k:ident).+ $($field:tt)+ ) => (
- $crate::event!(target: $target, parent: $parent, $crate::Level::DEBUG, { $($k).+ $($field)+ })
+ (target: $target:expr, parent: $parent:expr, $($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(target: $target, parent: $parent, $crate::Level::DEBUG, { $($k).+ $($field)* })
);
- (target: $target:expr, parent: $parent:expr, ?$($k:ident).+ $($field:tt)+ ) => (
- $crate::event!(target: $target, parent: $parent, $crate::Level::DEBUG, { $($k).+ $($field)+ })
+ (target: $target:expr, parent: $parent:expr, ?$($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(target: $target, parent: $parent, $crate::Level::DEBUG, { ?$($k).+ $($field)* })
);
- (target: $target:expr, parent: $parent:expr, %$($k:ident).+ $($field:tt)+ ) => (
- $crate::event!(target: $target, parent: $parent, $crate::Level::DEBUG, { $($k).+ $($field)+ })
+ (target: $target:expr, parent: $parent:expr, %$($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(target: $target, parent: $parent, $crate::Level::DEBUG, { %$($k).+ $($field)* })
);
(target: $target:expr, parent: $parent:expr, $($arg:tt)+ ) => (
$crate::event!(target: $target, parent: $parent, $crate::Level::DEBUG, {}, $($arg)+)
@@ -1633,14 +1632,14 @@
(name: $name:expr, parent: $parent:expr, { $($field:tt)* }, $($arg:tt)* ) => (
$crate::event!(name: $name, parent: $parent, $crate::Level::DEBUG, { $($field)* }, $($arg)*)
);
- (name: $name:expr, parent: $parent:expr, $($k:ident).+ $($field:tt)+ ) => (
- $crate::event!(name: $name, parent: $parent, $crate::Level::DEBUG, { $($k).+ $($field)+ })
+ (name: $name:expr, parent: $parent:expr, $($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(name: $name, parent: $parent, $crate::Level::DEBUG, { $($k).+ $($field)* })
);
- (name: $name:expr, parent: $parent:expr, ?$($k:ident).+ $($field:tt)+ ) => (
- $crate::event!(name: $name, parent: $parent, $crate::Level::DEBUG, { $($k).+ $($field)+ })
+ (name: $name:expr, parent: $parent:expr, ?$($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(name: $name, parent: $parent, $crate::Level::DEBUG, { ?$($k).+ $($field)* })
);
- (name: $name:expr, parent: $parent:expr, %$($k:ident).+ $($field:tt)+ ) => (
- $crate::event!(name: $name, parent: $parent, $crate::Level::DEBUG, { $($k).+ $($field)+ })
+ (name: $name:expr, parent: $parent:expr, %$($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(name: $name, parent: $parent, $crate::Level::DEBUG, { %$($k).+ $($field)* })
);
(name: $name:expr, parent: $parent:expr, $($arg:tt)+ ) => (
$crate::event!(name: $name, parent: $parent, $crate::Level::DEBUG, {}, $($arg)+)
@@ -1824,7 +1823,6 @@
$crate::event!(
target: module_path!(),
$crate::Level::DEBUG,
- {},
$($arg)+
)
);
@@ -1870,14 +1868,14 @@
(name: $name:expr, target: $target:expr, parent: $parent:expr, { $($field:tt)* }, $($arg:tt)* ) => (
$crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::INFO, { $($field)* }, $($arg)*)
);
- (name: $name:expr, target: $target:expr, parent: $parent:expr, $($k:ident).+ $($field:tt)+ ) => (
- $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::INFO, { $($k).+ $($field)+ })
+ (name: $name:expr, target: $target:expr, parent: $parent:expr, $($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::INFO, { $($k).+ $($field)* })
);
- (name: $name:expr, target: $target:expr, parent: $parent:expr, ?$($k:ident).+ $($field:tt)+ ) => (
- $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::INFO, { $($k).+ $($field)+ })
+ (name: $name:expr, target: $target:expr, parent: $parent:expr, ?$($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::INFO, { ?$($k).+ $($field)* })
);
- (name: $name:expr, target: $target:expr, parent: $parent:expr, %$($k:ident).+ $($field:tt)+ ) => (
- $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::INFO, { $($k).+ $($field)+ })
+ (name: $name:expr, target: $target:expr, parent: $parent:expr, %$($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::INFO, { %$($k).+ $($field)* })
);
(name: $name:expr, target: $target:expr, parent: $parent:expr, $($arg:tt)+ ) => (
$crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::INFO, {}, $($arg)+)
@@ -1887,14 +1885,14 @@
(name: $name:expr, target: $target:expr, { $($field:tt)* }, $($arg:tt)* ) => (
$crate::event!(name: $name, target: $target, $crate::Level::INFO, { $($field)* }, $($arg)*)
);
- (name: $name:expr, target: $target:expr, $($k:ident).+ $($field:tt)+ ) => (
- $crate::event!(name: $name, target: $target, $crate::Level::INFO, { $($k).+ $($field)+ })
+ (name: $name:expr, target: $target:expr, $($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(name: $name, target: $target, $crate::Level::INFO, { $($k).+ $($field)* })
);
- (name: $name:expr, target: $target:expr, ?$($k:ident).+ $($field:tt)+ ) => (
- $crate::event!(name: $name, target: $target, $crate::Level::INFO, { $($k).+ $($field)+ })
+ (name: $name:expr, target: $target:expr, ?$($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(name: $name, target: $target, $crate::Level::INFO, { ?$($k).+ $($field)* })
);
- (name: $name:expr, target: $target:expr, %$($k:ident).+ $($field:tt)+ ) => (
- $crate::event!(name: $name, target: $target, $crate::Level::INFO, { $($k).+ $($field)+ })
+ (name: $name:expr, target: $target:expr, %$($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(name: $name, target: $target, $crate::Level::INFO, { %$($k).+ $($field)* })
);
(name: $name:expr, target: $target:expr, $($arg:tt)+ ) => (
$crate::event!(name: $name, target: $target, $crate::Level::INFO, {}, $($arg)+)
@@ -1904,14 +1902,14 @@
(target: $target:expr, parent: $parent:expr, { $($field:tt)* }, $($arg:tt)* ) => (
$crate::event!(target: $target, parent: $parent, $crate::Level::INFO, { $($field)* }, $($arg)*)
);
- (target: $target:expr, parent: $parent:expr, $($k:ident).+ $($field:tt)+ ) => (
- $crate::event!(target: $target, parent: $parent, $crate::Level::INFO, { $($k).+ $($field)+ })
+ (target: $target:expr, parent: $parent:expr, $($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(target: $target, parent: $parent, $crate::Level::INFO, { $($k).+ $($field)* })
);
- (target: $target:expr, parent: $parent:expr, ?$($k:ident).+ $($field:tt)+ ) => (
- $crate::event!(target: $target, parent: $parent, $crate::Level::INFO, { $($k).+ $($field)+ })
+ (target: $target:expr, parent: $parent:expr, ?$($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(target: $target, parent: $parent, $crate::Level::INFO, { ?$($k).+ $($field)* })
);
- (target: $target:expr, parent: $parent:expr, %$($k:ident).+ $($field:tt)+ ) => (
- $crate::event!(target: $target, parent: $parent, $crate::Level::INFO, { $($k).+ $($field)+ })
+ (target: $target:expr, parent: $parent:expr, %$($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(target: $target, parent: $parent, $crate::Level::INFO, { %$($k).+ $($field)* })
);
(target: $target:expr, parent: $parent:expr, $($arg:tt)+ ) => (
$crate::event!(target: $target, parent: $parent, $crate::Level::INFO, {}, $($arg)+)
@@ -1921,14 +1919,14 @@
(name: $name:expr, parent: $parent:expr, { $($field:tt)* }, $($arg:tt)* ) => (
$crate::event!(name: $name, parent: $parent, $crate::Level::INFO, { $($field)* }, $($arg)*)
);
- (name: $name:expr, parent: $parent:expr, $($k:ident).+ $($field:tt)+ ) => (
- $crate::event!(name: $name, parent: $parent, $crate::Level::INFO, { $($k).+ $($field)+ })
+ (name: $name:expr, parent: $parent:expr, $($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(name: $name, parent: $parent, $crate::Level::INFO, { $($k).+ $($field)* })
);
- (name: $name:expr, parent: $parent:expr, ?$($k:ident).+ $($field:tt)+ ) => (
- $crate::event!(name: $name, parent: $parent, $crate::Level::INFO, { $($k).+ $($field)+ })
+ (name: $name:expr, parent: $parent:expr, ?$($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(name: $name, parent: $parent, $crate::Level::INFO, { ?$($k).+ $($field)* })
);
- (name: $name:expr, parent: $parent:expr, %$($k:ident).+ $($field:tt)+ ) => (
- $crate::event!(name: $name, parent: $parent, $crate::Level::INFO, { $($k).+ $($field)+ })
+ (name: $name:expr, parent: $parent:expr, %$($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(name: $name, parent: $parent, $crate::Level::INFO, { %$($k).+ $($field)* })
);
(name: $name:expr, parent: $parent:expr, $($arg:tt)+ ) => (
$crate::event!(name: $name, parent: $parent, $crate::Level::INFO, {}, $($arg)+)
@@ -2112,7 +2110,6 @@
$crate::event!(
target: module_path!(),
$crate::Level::INFO,
- {},
$($arg)+
)
);
@@ -2151,14 +2148,14 @@
(name: $name:expr, target: $target:expr, parent: $parent:expr, { $($field:tt)* }, $($arg:tt)* ) => (
$crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::WARN, { $($field)* }, $($arg)*)
);
- (name: $name:expr, target: $target:expr, parent: $parent:expr, $($k:ident).+ $($field:tt)+ ) => (
- $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::WARN, { $($k).+ $($field)+ })
+ (name: $name:expr, target: $target:expr, parent: $parent:expr, $($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::WARN, { $($k).+ $($field)* })
);
- (name: $name:expr, target: $target:expr, parent: $parent:expr, ?$($k:ident).+ $($field:tt)+ ) => (
- $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::WARN, { $($k).+ $($field)+ })
+ (name: $name:expr, target: $target:expr, parent: $parent:expr, ?$($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::WARN, { ?$($k).+ $($field)* })
);
- (name: $name:expr, target: $target:expr, parent: $parent:expr, %$($k:ident).+ $($field:tt)+ ) => (
- $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::WARN, { $($k).+ $($field)+ })
+ (name: $name:expr, target: $target:expr, parent: $parent:expr, %$($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::WARN, { %$($k).+ $($field)* })
);
(name: $name:expr, target: $target:expr, parent: $parent:expr, $($arg:tt)+ ) => (
$crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::WARN, {}, $($arg)+)
@@ -2168,14 +2165,14 @@
(name: $name:expr, target: $target:expr, { $($field:tt)* }, $($arg:tt)* ) => (
$crate::event!(name: $name, target: $target, $crate::Level::WARN, { $($field)* }, $($arg)*)
);
- (name: $name:expr, target: $target:expr, $($k:ident).+ $($field:tt)+ ) => (
- $crate::event!(name: $name, target: $target, $crate::Level::WARN, { $($k).+ $($field)+ })
+ (name: $name:expr, target: $target:expr, $($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(name: $name, target: $target, $crate::Level::WARN, { $($k).+ $($field)* })
);
- (name: $name:expr, target: $target:expr, ?$($k:ident).+ $($field:tt)+ ) => (
- $crate::event!(name: $name, target: $target, $crate::Level::WARN, { $($k).+ $($field)+ })
+ (name: $name:expr, target: $target:expr, ?$($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(name: $name, target: $target, $crate::Level::WARN, { ?$($k).+ $($field)* })
);
- (name: $name:expr, target: $target:expr, %$($k:ident).+ $($field:tt)+ ) => (
- $crate::event!(name: $name, target: $target, $crate::Level::WARN, { $($k).+ $($field)+ })
+ (name: $name:expr, target: $target:expr, %$($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(name: $name, target: $target, $crate::Level::WARN, { %$($k).+ $($field)* })
);
(name: $name:expr, target: $target:expr, $($arg:tt)+ ) => (
$crate::event!(name: $name, target: $target, $crate::Level::WARN, {}, $($arg)+)
@@ -2185,14 +2182,14 @@
(target: $target:expr, parent: $parent:expr, { $($field:tt)* }, $($arg:tt)* ) => (
$crate::event!(target: $target, parent: $parent, $crate::Level::WARN, { $($field)* }, $($arg)*)
);
- (target: $target:expr, parent: $parent:expr, $($k:ident).+ $($field:tt)+ ) => (
- $crate::event!(target: $target, parent: $parent, $crate::Level::WARN, { $($k).+ $($field)+ })
+ (target: $target:expr, parent: $parent:expr, $($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(target: $target, parent: $parent, $crate::Level::WARN, { $($k).+ $($field)* })
);
- (target: $target:expr, parent: $parent:expr, ?$($k:ident).+ $($field:tt)+ ) => (
- $crate::event!(target: $target, parent: $parent, $crate::Level::WARN, { $($k).+ $($field)+ })
+ (target: $target:expr, parent: $parent:expr, ?$($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(target: $target, parent: $parent, $crate::Level::WARN, { ?$($k).+ $($field)* })
);
- (target: $target:expr, parent: $parent:expr, %$($k:ident).+ $($field:tt)+ ) => (
- $crate::event!(target: $target, parent: $parent, $crate::Level::WARN, { $($k).+ $($field)+ })
+ (target: $target:expr, parent: $parent:expr, %$($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(target: $target, parent: $parent, $crate::Level::WARN, { %$($k).+ $($field)* })
);
(target: $target:expr, parent: $parent:expr, $($arg:tt)+ ) => (
$crate::event!(target: $target, parent: $parent, $crate::Level::WARN, {}, $($arg)+)
@@ -2202,14 +2199,14 @@
(name: $name:expr, parent: $parent:expr, { $($field:tt)* }, $($arg:tt)* ) => (
$crate::event!(name: $name, parent: $parent, $crate::Level::WARN, { $($field)* }, $($arg)*)
);
- (name: $name:expr, parent: $parent:expr, $($k:ident).+ $($field:tt)+ ) => (
- $crate::event!(name: $name, parent: $parent, $crate::Level::WARN, { $($k).+ $($field)+ })
+ (name: $name:expr, parent: $parent:expr, $($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(name: $name, parent: $parent, $crate::Level::WARN, { $($k).+ $($field)* })
);
- (name: $name:expr, parent: $parent:expr, ?$($k:ident).+ $($field:tt)+ ) => (
- $crate::event!(name: $name, parent: $parent, $crate::Level::WARN, { $($k).+ $($field)+ })
+ (name: $name:expr, parent: $parent:expr, ?$($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(name: $name, parent: $parent, $crate::Level::WARN, { ?$($k).+ $($field)* })
);
- (name: $name:expr, parent: $parent:expr, %$($k:ident).+ $($field:tt)+ ) => (
- $crate::event!(name: $name, parent: $parent, $crate::Level::WARN, { $($k).+ $($field)+ })
+ (name: $name:expr, parent: $parent:expr, %$($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(name: $name, parent: $parent, $crate::Level::WARN, { %$($k).+ $($field)* })
);
(name: $name:expr, parent: $parent:expr, $($arg:tt)+ ) => (
$crate::event!(name: $name, parent: $parent, $crate::Level::WARN, {}, $($arg)+)
@@ -2393,7 +2390,6 @@
$crate::event!(
target: module_path!(),
$crate::Level::WARN,
- {},
$($arg)+
)
);
@@ -2428,14 +2424,14 @@
(name: $name:expr, target: $target:expr, parent: $parent:expr, { $($field:tt)* }, $($arg:tt)* ) => (
$crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::ERROR, { $($field)* }, $($arg)*)
);
- (name: $name:expr, target: $target:expr, parent: $parent:expr, $($k:ident).+ $($field:tt)+ ) => (
- $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::ERROR, { $($k).+ $($field)+ })
+ (name: $name:expr, target: $target:expr, parent: $parent:expr, $($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::ERROR, { $($k).+ $($field)* })
);
- (name: $name:expr, target: $target:expr, parent: $parent:expr, ?$($k:ident).+ $($field:tt)+ ) => (
- $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::ERROR, { $($k).+ $($field)+ })
+ (name: $name:expr, target: $target:expr, parent: $parent:expr, ?$($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::ERROR, { ?$($k).+ $($field)* })
);
- (name: $name:expr, target: $target:expr, parent: $parent:expr, %$($k:ident).+ $($field:tt)+ ) => (
- $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::ERROR, { $($k).+ $($field)+ })
+ (name: $name:expr, target: $target:expr, parent: $parent:expr, %$($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::ERROR, { %$($k).+ $($field)* })
);
(name: $name:expr, target: $target:expr, parent: $parent:expr, $($arg:tt)+ ) => (
$crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::ERROR, {}, $($arg)+)
@@ -2445,14 +2441,14 @@
(name: $name:expr, target: $target:expr, { $($field:tt)* }, $($arg:tt)* ) => (
$crate::event!(name: $name, target: $target, $crate::Level::ERROR, { $($field)* }, $($arg)*)
);
- (name: $name:expr, target: $target:expr, $($k:ident).+ $($field:tt)+ ) => (
- $crate::event!(name: $name, target: $target, $crate::Level::ERROR, { $($k).+ $($field)+ })
+ (name: $name:expr, target: $target:expr, $($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(name: $name, target: $target, $crate::Level::ERROR, { $($k).+ $($field)* })
);
- (name: $name:expr, target: $target:expr, ?$($k:ident).+ $($field:tt)+ ) => (
- $crate::event!(name: $name, target: $target, $crate::Level::ERROR, { $($k).+ $($field)+ })
+ (name: $name:expr, target: $target:expr, ?$($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(name: $name, target: $target, $crate::Level::ERROR, { ?$($k).+ $($field)* })
);
- (name: $name:expr, target: $target:expr, %$($k:ident).+ $($field:tt)+ ) => (
- $crate::event!(name: $name, target: $target, $crate::Level::ERROR, { $($k).+ $($field)+ })
+ (name: $name:expr, target: $target:expr, %$($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(name: $name, target: $target, $crate::Level::ERROR, { %$($k).+ $($field)* })
);
(name: $name:expr, target: $target:expr, $($arg:tt)+ ) => (
$crate::event!(name: $name, target: $target, $crate::Level::ERROR, {}, $($arg)+)
@@ -2462,14 +2458,14 @@
(target: $target:expr, parent: $parent:expr, { $($field:tt)* }, $($arg:tt)* ) => (
$crate::event!(target: $target, parent: $parent, $crate::Level::ERROR, { $($field)* }, $($arg)*)
);
- (target: $target:expr, parent: $parent:expr, $($k:ident).+ $($field:tt)+ ) => (
- $crate::event!(target: $target, parent: $parent, $crate::Level::ERROR, { $($k).+ $($field)+ })
+ (target: $target:expr, parent: $parent:expr, $($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(target: $target, parent: $parent, $crate::Level::ERROR, { $($k).+ $($field)* })
);
- (target: $target:expr, parent: $parent:expr, ?$($k:ident).+ $($field:tt)+ ) => (
- $crate::event!(target: $target, parent: $parent, $crate::Level::ERROR, { $($k).+ $($field)+ })
+ (target: $target:expr, parent: $parent:expr, ?$($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(target: $target, parent: $parent, $crate::Level::ERROR, { ?$($k).+ $($field)* })
);
- (target: $target:expr, parent: $parent:expr, %$($k:ident).+ $($field:tt)+ ) => (
- $crate::event!(target: $target, parent: $parent, $crate::Level::ERROR, { $($k).+ $($field)+ })
+ (target: $target:expr, parent: $parent:expr, %$($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(target: $target, parent: $parent, $crate::Level::ERROR, { %$($k).+ $($field)* })
);
(target: $target:expr, parent: $parent:expr, $($arg:tt)+ ) => (
$crate::event!(target: $target, parent: $parent, $crate::Level::ERROR, {}, $($arg)+)
@@ -2479,14 +2475,14 @@
(name: $name:expr, parent: $parent:expr, { $($field:tt)* }, $($arg:tt)* ) => (
$crate::event!(name: $name, parent: $parent, $crate::Level::ERROR, { $($field)* }, $($arg)*)
);
- (name: $name:expr, parent: $parent:expr, $($k:ident).+ $($field:tt)+ ) => (
- $crate::event!(name: $name, parent: $parent, $crate::Level::ERROR, { $($k).+ $($field)+ })
+ (name: $name:expr, parent: $parent:expr, $($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(name: $name, parent: $parent, $crate::Level::ERROR, { $($k).+ $($field)* })
);
- (name: $name:expr, parent: $parent:expr, ?$($k:ident).+ $($field:tt)+ ) => (
- $crate::event!(name: $name, parent: $parent, $crate::Level::ERROR, { $($k).+ $($field)+ })
+ (name: $name:expr, parent: $parent:expr, ?$($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(name: $name, parent: $parent, $crate::Level::ERROR, { ?$($k).+ $($field)* })
);
- (name: $name:expr, parent: $parent:expr, %$($k:ident).+ $($field:tt)+ ) => (
- $crate::event!(name: $name, parent: $parent, $crate::Level::ERROR, { $($k).+ $($field)+ })
+ (name: $name:expr, parent: $parent:expr, %$($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(name: $name, parent: $parent, $crate::Level::ERROR, { %$($k).+ $($field)* })
);
(name: $name:expr, parent: $parent:expr, $($arg:tt)+ ) => (
$crate::event!(name: $name, parent: $parent, $crate::Level::ERROR, {}, $($arg)+)
@@ -2670,7 +2666,6 @@
$crate::event!(
target: module_path!(),
$crate::Level::ERROR,
- {},
$($arg)+
)
);
@@ -2802,79 +2797,79 @@
// };
(@ { $(,)* $($out:expr),* }, $next:expr, $($k:ident).+ = ?$val:expr, $($rest:tt)*) => {
$crate::valueset!(
- @ { $($out),*, (&$next, ::core::option::Option::Some(&debug(&$val) as &dyn Value)) },
+ @ { $($out),*, (&$next, $crate::__macro_support::Option::Some(&debug(&$val) as &dyn Value)) },
$next,
$($rest)*
)
};
(@ { $(,)* $($out:expr),* }, $next:expr, $($k:ident).+ = %$val:expr, $($rest:tt)*) => {
$crate::valueset!(
- @ { $($out),*, (&$next, ::core::option::Option::Some(&display(&$val) as &dyn Value)) },
+ @ { $($out),*, (&$next, $crate::__macro_support::Option::Some(&display(&$val) as &dyn Value)) },
$next,
$($rest)*
)
};
(@ { $(,)* $($out:expr),* }, $next:expr, $($k:ident).+ = $val:expr, $($rest:tt)*) => {
$crate::valueset!(
- @ { $($out),*, (&$next, ::core::option::Option::Some(&$val as &dyn Value)) },
+ @ { $($out),*, (&$next, $crate::__macro_support::Option::Some(&$val as &dyn Value)) },
$next,
$($rest)*
)
};
(@ { $(,)* $($out:expr),* }, $next:expr, $($k:ident).+, $($rest:tt)*) => {
$crate::valueset!(
- @ { $($out),*, (&$next, ::core::option::Option::Some(&$($k).+ as &dyn Value)) },
+ @ { $($out),*, (&$next, $crate::__macro_support::Option::Some(&$($k).+ as &dyn Value)) },
$next,
$($rest)*
)
};
(@ { $(,)* $($out:expr),* }, $next:expr, ?$($k:ident).+, $($rest:tt)*) => {
$crate::valueset!(
- @ { $($out),*, (&$next, ::core::option::Option::Some(&debug(&$($k).+) as &dyn Value)) },
+ @ { $($out),*, (&$next, $crate::__macro_support::Option::Some(&debug(&$($k).+) as &dyn Value)) },
$next,
$($rest)*
)
};
(@ { $(,)* $($out:expr),* }, $next:expr, %$($k:ident).+, $($rest:tt)*) => {
$crate::valueset!(
- @ { $($out),*, (&$next, ::core::option::Option::Some(&display(&$($k).+) as &dyn Value)) },
+ @ { $($out),*, (&$next, $crate::__macro_support::Option::Some(&display(&$($k).+) as &dyn Value)) },
$next,
$($rest)*
)
};
(@ { $(,)* $($out:expr),* }, $next:expr, $($k:ident).+ = ?$val:expr) => {
$crate::valueset!(
- @ { $($out),*, (&$next, ::core::option::Option::Some(&debug(&$val) as &dyn Value)) },
+ @ { $($out),*, (&$next, $crate::__macro_support::Option::Some(&debug(&$val) as &dyn Value)) },
$next,
)
};
(@ { $(,)* $($out:expr),* }, $next:expr, $($k:ident).+ = %$val:expr) => {
$crate::valueset!(
- @ { $($out),*, (&$next, ::core::option::Option::Some(&display(&$val) as &dyn Value)) },
+ @ { $($out),*, (&$next, $crate::__macro_support::Option::Some(&display(&$val) as &dyn Value)) },
$next,
)
};
(@ { $(,)* $($out:expr),* }, $next:expr, $($k:ident).+ = $val:expr) => {
$crate::valueset!(
- @ { $($out),*, (&$next, ::core::option::Option::Some(&$val as &dyn Value)) },
+ @ { $($out),*, (&$next, $crate::__macro_support::Option::Some(&$val as &dyn Value)) },
$next,
)
};
(@ { $(,)* $($out:expr),* }, $next:expr, $($k:ident).+) => {
$crate::valueset!(
- @ { $($out),*, (&$next, ::core::option::Option::Some(&$($k).+ as &dyn Value)) },
+ @ { $($out),*, (&$next, $crate::__macro_support::Option::Some(&$($k).+ as &dyn Value)) },
$next,
)
};
(@ { $(,)* $($out:expr),* }, $next:expr, ?$($k:ident).+) => {
$crate::valueset!(
- @ { $($out),*, (&$next, ::core::option::Option::Some(&debug(&$($k).+) as &dyn Value)) },
+ @ { $($out),*, (&$next, $crate::__macro_support::Option::Some(&debug(&$($k).+) as &dyn Value)) },
$next,
)
};
(@ { $(,)* $($out:expr),* }, $next:expr, %$($k:ident).+) => {
$crate::valueset!(
- @ { $($out),*, (&$next, ::core::option::Option::Some(&display(&$($k).+) as &dyn Value)) },
+ @ { $($out),*, (&$next, $crate::__macro_support::Option::Some(&display(&$($k).+) as &dyn Value)) },
$next,
)
};
@@ -2882,40 +2877,40 @@
// Handle literal names
(@ { $(,)* $($out:expr),* }, $next:expr, $k:literal = ?$val:expr, $($rest:tt)*) => {
$crate::valueset!(
- @ { $($out),*, (&$next, ::core::option::Option::Some(&debug(&$val) as &dyn Value)) },
+ @ { $($out),*, (&$next, $crate::__macro_support::Option::Some(&debug(&$val) as &dyn Value)) },
$next,
$($rest)*
)
};
(@ { $(,)* $($out:expr),* }, $next:expr, $k:literal = %$val:expr, $($rest:tt)*) => {
$crate::valueset!(
- @ { $($out),*, (&$next, ::core::option::Option::Some(&display(&$val) as &dyn Value)) },
+ @ { $($out),*, (&$next, $crate::__macro_support::Option::Some(&display(&$val) as &dyn Value)) },
$next,
$($rest)*
)
};
(@ { $(,)* $($out:expr),* }, $next:expr, $k:literal = $val:expr, $($rest:tt)*) => {
$crate::valueset!(
- @ { $($out),*, (&$next, ::core::option::Option::Some(&$val as &dyn Value)) },
+ @ { $($out),*, (&$next, $crate::__macro_support::Option::Some(&$val as &dyn Value)) },
$next,
$($rest)*
)
};
(@ { $(,)* $($out:expr),* }, $next:expr, $k:literal = ?$val:expr) => {
$crate::valueset!(
- @ { $($out),*, (&$next, ::core::option::Option::Some(&debug(&$val) as &dyn Value)) },
+ @ { $($out),*, (&$next, $crate::__macro_support::Option::Some(&debug(&$val) as &dyn Value)) },
$next,
)
};
(@ { $(,)* $($out:expr),* }, $next:expr, $k:literal = %$val:expr) => {
$crate::valueset!(
- @ { $($out),*, (&$next, ::core::option::Option::Some(&display(&$val) as &dyn Value)) },
+ @ { $($out),*, (&$next, $crate::__macro_support::Option::Some(&display(&$val) as &dyn Value)) },
$next,
)
};
(@ { $(,)* $($out:expr),* }, $next:expr, $k:literal = $val:expr) => {
$crate::valueset!(
- @ { $($out),*, (&$next, ::core::option::Option::Some(&$val as &dyn Value)) },
+ @ { $($out),*, (&$next, $crate::__macro_support::Option::Some(&$val as &dyn Value)) },
$next,
)
};
@@ -2963,7 +2958,7 @@
// Remainder is unparsable, but exists --- must be format args!
(@ { $(,)* $($out:expr),* }, $next:expr, $($rest:tt)+) => {
- $crate::valueset!(@ { (&$next, ::core::option::Option::Some(&::core::format_args!($($rest)+) as &dyn Value)), $($out),* }, $next, )
+ $crate::valueset!(@ { (&$next, $crate::__macro_support::Option::Some(&$crate::__macro_support::format_args!($($rest)+) as &dyn Value)), $($out),* }, $next, )
};
// === entry ===
@@ -2974,7 +2969,7 @@
let mut iter = $fields.iter();
$fields.value_set($crate::valueset!(
@ { },
- ::core::iter::Iterator::next(&mut iter).expect("FieldSet corrupted (this is a bug)"),
+ $crate::__macro_support::Iterator::next(&mut iter).expect("FieldSet corrupted (this is a bug)"),
$($kvs)+
))
}
@@ -3041,7 +3036,7 @@
$crate::fieldset!(@ { $($out),*, $k } $($rest)*)
};
- // Remainder is unparseable, but exists --- must be format args!
+ // Remainder is unparsable, but exists --- must be format args!
(@ { $(,)* $($out:expr),* } $($rest:tt)+) => {
$crate::fieldset!(@ { "message", $($out),*, })
};
@@ -3071,8 +3066,8 @@
#[doc(hidden)]
#[macro_export]
macro_rules! __tracing_stringify {
- ($s:expr) => {
- stringify!($s)
+ ($($t:tt)*) => {
+ stringify!($($t)*)
};
}
diff --git a/crates/tracing/src/span.rs b/crates/tracing/src/span.rs
index 3c235dc..8085391 100644
--- a/crates/tracing/src/span.rs
+++ b/crates/tracing/src/span.rs
@@ -1104,20 +1104,14 @@
/// Returns a [`Field`][super::field::Field] for the field with the
/// given `name`, if one exists,
- pub fn field<Q: ?Sized>(&self, field: &Q) -> Option<field::Field>
- where
- Q: field::AsField,
- {
+ pub fn field<Q: field::AsField + ?Sized>(&self, field: &Q) -> Option<field::Field> {
self.metadata().and_then(|meta| field.as_field(meta))
}
/// Returns true if this `Span` has a field for the given
/// [`Field`][super::field::Field] or field name.
#[inline]
- pub fn has_field<Q: ?Sized>(&self, field: &Q) -> bool
- where
- Q: field::AsField,
- {
+ pub fn has_field<Q: field::AsField + ?Sized>(&self, field: &Q) -> bool {
self.field(field).is_some()
}
@@ -1191,11 +1185,11 @@
///
/// [`field::Empty`]: super::field::Empty
/// [`Metadata`]: super::Metadata
- pub fn record<Q: ?Sized, V>(&self, field: &Q, value: V) -> &Self
- where
- Q: field::AsField,
- V: field::Value,
- {
+ pub fn record<Q: field::AsField + ?Sized, V: field::Value>(
+ &self,
+ field: &Q,
+ value: V,
+ ) -> &Self {
if let Some(meta) = self.meta {
if let Some(field) = field.as_field(meta) {
self.record_all(
@@ -1607,14 +1601,6 @@
mod test {
use super::*;
- trait AssertSend: Send {}
- impl AssertSend for Span {}
-
- trait AssertSync: Sync {}
- impl AssertSync for Span {}
- impl AssertSync for Entered<'_> {}
- impl AssertSync for EnteredSpan {}
-
#[test]
fn test_record_backwards_compat() {
Span::current().record("some-key", "some text");
diff --git a/crates/tracing/tests/enabled.rs b/crates/tracing/tests/enabled.rs
index 5a45963..e00b319 100644
--- a/crates/tracing/tests/enabled.rs
+++ b/crates/tracing/tests/enabled.rs
@@ -43,7 +43,7 @@
let _guard = tracing::subscriber::set_default(subscriber);
- // Ensure that the `_event` and `_span` alternatives work corretly
+ // Ensure that the `_event` and `_span` alternatives work correctly
assert!(!tracing::event_enabled!(Level::TRACE));
assert!(tracing::event_enabled!(Level::DEBUG));
assert!(tracing::span_enabled!(Level::TRACE));
diff --git a/crates/tracing/tests/event.rs b/crates/tracing/tests/event.rs
index 0be7c0b..25b5bbe 100644
--- a/crates/tracing/tests/event.rs
+++ b/crates/tracing/tests/event.rs
@@ -86,7 +86,7 @@
.and(
expect::field("question").with_value(&"life, the universe, and everything"),
)
- .and(field::msg(format_args!(
+ .and(expect::msg(format_args!(
"hello from my event! tricky? {:?}!",
true
)))
@@ -115,7 +115,7 @@
.and(
expect::field("question").with_value(&"life, the universe, and everything"),
)
- .and(field::msg(format_args!("hello from my event")))
+ .and(expect::msg(format_args!("hello from my event")))
.only(),
),
)
@@ -338,7 +338,7 @@
fn explicit_child() {
let (subscriber, handle) = subscriber::mock()
.new_span(expect::span().named("foo"))
- .event(expect::event().with_explicit_parent(Some("foo")))
+ .event(expect::event().with_ancestry(expect::has_explicit_parent("foo")))
.only()
.run_with_handle();
@@ -355,11 +355,11 @@
fn explicit_child_at_levels() {
let (subscriber, handle) = subscriber::mock()
.new_span(expect::span().named("foo"))
- .event(expect::event().with_explicit_parent(Some("foo")))
- .event(expect::event().with_explicit_parent(Some("foo")))
- .event(expect::event().with_explicit_parent(Some("foo")))
- .event(expect::event().with_explicit_parent(Some("foo")))
- .event(expect::event().with_explicit_parent(Some("foo")))
+ .event(expect::event().with_ancestry(expect::has_explicit_parent("foo")))
+ .event(expect::event().with_ancestry(expect::has_explicit_parent("foo")))
+ .event(expect::event().with_ancestry(expect::has_explicit_parent("foo")))
+ .event(expect::event().with_ancestry(expect::has_explicit_parent("foo")))
+ .event(expect::event().with_ancestry(expect::has_explicit_parent("foo")))
.only()
.run_with_handle();
@@ -527,6 +527,12 @@
let (subscriber, handle) = subscriber::mock()
.event(expect_event())
.event(expect_event())
+ .event(expect_event())
+ .event(expect_event())
+ .event(expect_event())
+ .event(expect_event())
+ .event(expect_event())
+ .event(expect_event())
.only()
.run_with_handle();
@@ -548,7 +554,67 @@
},
"quux"
);
+ tracing::info!(
+ { std::convert::identity(FOO) } = "bar",
+ { "constant string" } = "also works",
+ foo.bar = "baz",
+ "quux"
+ );
+ tracing::info!(
+ {
+ { std::convert::identity(FOO) } = "bar",
+ { "constant string" } = "also works",
+ foo.bar = "baz",
+ },
+ "quux"
+ );
+ tracing::event!(
+ Level::INFO,
+ { std::convert::identity(FOO) } = "bar",
+ { "constant string" } = "also works",
+ foo.bar = "baz",
+ "{}",
+ "quux"
+ );
+ tracing::event!(
+ Level::INFO,
+ {
+ { std::convert::identity(FOO) } = "bar",
+ { "constant string" } = "also works",
+ foo.bar = "baz",
+ },
+ "{}",
+ "quux"
+ );
+ tracing::info!(
+ { std::convert::identity(FOO) } = "bar",
+ { "constant string" } = "also works",
+ foo.bar = "baz",
+ "{}",
+ "quux"
+ );
+ tracing::info!(
+ {
+ { std::convert::identity(FOO) } = "bar",
+ { "constant string" } = "also works",
+ foo.bar = "baz",
+ },
+ "{}",
+ "quux"
+ );
});
handle.assert_finished();
}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn keyword_ident_in_field_name() {
+ let (subscriber, handle) = subscriber::mock()
+ .event(expect::event().with_fields(expect::field("crate").with_value(&"tracing")))
+ .only()
+ .run_with_handle();
+
+ with_default(subscriber, || error!(crate = "tracing", "message"));
+ handle.assert_finished();
+}
diff --git a/crates/tracing/tests/instrument.rs b/crates/tracing/tests/instrument.rs
index 5247249..eb7e9ed 100644
--- a/crates/tracing/tests/instrument.rs
+++ b/crates/tracing/tests/instrument.rs
@@ -21,6 +21,7 @@
}
}
+ #[allow(dead_code)] // Field not used, but logs on `Drop`
struct Fut(Option<AssertSpanOnDrop>);
impl Future for Fut {
@@ -34,13 +35,21 @@
let subscriber = subscriber::mock()
.enter(expect::span().named("foo"))
- .event(expect::event().at_level(Level::INFO))
+ .event(
+ expect::event()
+ .with_ancestry(expect::has_contextual_parent("foo"))
+ .at_level(Level::INFO),
+ )
.exit(expect::span().named("foo"))
.enter(expect::span().named("foo"))
.exit(expect::span().named("foo"))
.drop_span(expect::span().named("foo"))
.enter(expect::span().named("bar"))
- .event(expect::event().at_level(Level::INFO))
+ .event(
+ expect::event()
+ .with_ancestry(expect::has_contextual_parent("bar"))
+ .at_level(Level::INFO),
+ )
.exit(expect::span().named("bar"))
.drop_span(expect::span().named("bar"))
.only()
diff --git a/crates/tracing/tests/macros.rs b/crates/tracing/tests/macros.rs
index 81b929d..a072389 100644
--- a/crates/tracing/tests/macros.rs
+++ b/crates/tracing/tests/macros.rs
@@ -5,15 +5,21 @@
#[cfg(target_arch = "wasm32")]
extern crate wasm_bindgen_test;
-// TODO: remove this once https://github.com/tokio-rs/tracing/pull/2675#issuecomment-1667628907 is resolved
-#[cfg(target_arch = "wasm32")]
-use ::core::option::Option::None;
-
use tracing::{
callsite, debug, debug_span, enabled, error, error_span, event, event_enabled, info, info_span,
span, span_enabled, trace, trace_span, warn, warn_span, Level,
};
+/// A type that implements `Display` and `Debug`, but not `Value`.
+#[derive(Debug)]
+struct DisplayDebug;
+
+impl ::std::fmt::Display for DisplayDebug {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
+ ::std::write!(f, "Foo")
+ }
+}
+
// Tests that macros work across various invocation syntax.
//
// These are quite repetitive, and _could_ be generated by a macro. However,
@@ -549,12 +555,15 @@
trace!(foo = ?3, bar.baz = %2, quux = false);
trace!(foo = 3, bar.baz = 2, quux = false);
trace!(foo = 3, bar.baz = 3,);
+ trace!("foo" = 3, bar.baz = 3,);
+ trace!(foo = 3, "bar.baz" = 3,);
trace!("foo");
trace!("foo: {}", 3);
trace!(foo = ?3, bar.baz = %2, quux = false, "hello world {:?}", 42);
trace!(foo = 3, bar.baz = 2, quux = false, "hello world {:?}", 42);
trace!(foo = 3, bar.baz = 3, "hello world {:?}", 42,);
trace!({ foo = 3, bar.baz = 80 }, "quux");
+ trace!({ "foo" = 3, "bar.baz" = 80 }, "quux");
trace!({ foo = 2, bar.baz = 79 }, "quux {:?}", true);
trace!({ foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
trace!({ foo = 2, bar.baz = 78 }, "quux");
@@ -573,6 +582,9 @@
trace!(?foo);
trace!(%foo);
trace!(foo);
+ trace!("foo" = ?foo);
+ trace!("foo" = %foo);
+ trace!("foo" = foo);
trace!(name: "foo", ?foo);
trace!(name: "foo", %foo);
trace!(name: "foo", foo);
@@ -585,6 +597,22 @@
trace!(target: "foo_events", ?foo, true, "message");
trace!(target: "foo_events", %foo, true, "message");
trace!(target: "foo_events", foo, true, "message");
+ trace!(name: "foo", target: "foo_events", ?foo);
+ trace!(name: "foo", target: "foo_events", %foo);
+ trace!(name: "foo", target: "foo_events", foo);
+ let foo = DisplayDebug;
+ trace!(?foo);
+ trace!(%foo);
+ trace!(name: "foo", ?foo);
+ trace!(name: "foo", %foo);
+ trace!(name: "foo", ?foo, true, "message");
+ trace!(name: "foo", %foo, true, "message");
+ trace!(target: "foo_events", ?foo);
+ trace!(target: "foo_events", %foo);
+ trace!(target: "foo_events", ?foo, true, "message");
+ trace!(target: "foo_events", %foo, true, "message");
+ trace!(name: "foo", target: "foo_events", ?foo, true, "message");
+ trace!(name: "foo", target: "foo_events", %foo, true, "message");
}
#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
@@ -593,12 +621,15 @@
debug!(foo = ?3, bar.baz = %2, quux = false);
debug!(foo = 3, bar.baz = 2, quux = false);
debug!(foo = 3, bar.baz = 3,);
+ debug!("foo" = 3, bar.baz = 3,);
+ debug!(foo = 3, "bar.baz" = 3,);
debug!("foo");
debug!("foo: {}", 3);
debug!(foo = ?3, bar.baz = %2, quux = false, "hello world {:?}", 42);
debug!(foo = 3, bar.baz = 2, quux = false, "hello world {:?}", 42);
debug!(foo = 3, bar.baz = 3, "hello world {:?}", 42,);
debug!({ foo = 3, bar.baz = 80 }, "quux");
+ debug!({ "foo" = 3, "bar.baz" = 80 }, "quux");
debug!({ foo = 2, bar.baz = 79 }, "quux {:?}", true);
debug!({ foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
debug!({ foo = 2, bar.baz = 78 }, "quux");
@@ -617,6 +648,9 @@
debug!(?foo);
debug!(%foo);
debug!(foo);
+ debug!("foo" = ?foo);
+ debug!("foo" = %foo);
+ debug!("foo" = foo);
debug!(name: "foo", ?foo);
debug!(name: "foo", %foo);
debug!(name: "foo", foo);
@@ -629,6 +663,22 @@
debug!(target: "foo_events", ?foo, true, "message");
debug!(target: "foo_events", %foo, true, "message");
debug!(target: "foo_events", foo, true, "message");
+ debug!(name: "foo", target: "foo_events", ?foo);
+ debug!(name: "foo", target: "foo_events", %foo);
+ debug!(name: "foo", target: "foo_events", foo);
+ let foo = DisplayDebug;
+ debug!(?foo);
+ debug!(%foo);
+ debug!(name: "foo", ?foo);
+ debug!(name: "foo", %foo);
+ debug!(name: "foo", ?foo, true, "message");
+ debug!(name: "foo", %foo, true, "message");
+ debug!(target: "foo_events", ?foo);
+ debug!(target: "foo_events", %foo);
+ debug!(target: "foo_events", ?foo, true, "message");
+ debug!(target: "foo_events", %foo, true, "message");
+ debug!(name: "foo", target: "foo_events", ?foo, true, "message");
+ debug!(name: "foo", target: "foo_events", %foo, true, "message");
}
#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
@@ -637,12 +687,15 @@
info!(foo = ?3, bar.baz = %2, quux = false);
info!(foo = 3, bar.baz = 2, quux = false);
info!(foo = 3, bar.baz = 3,);
+ info!("foo" = 3, bar.baz = 3,);
+ info!(foo = 3, "bar.baz" = 3,);
info!("foo");
info!("foo: {}", 3);
info!(foo = ?3, bar.baz = %2, quux = false, "hello world {:?}", 42);
info!(foo = 3, bar.baz = 2, quux = false, "hello world {:?}", 42);
info!(foo = 3, bar.baz = 3, "hello world {:?}", 42,);
info!({ foo = 3, bar.baz = 80 }, "quux");
+ info!({ "foo" = 3, "bar.baz" = 80 }, "quux");
info!({ foo = 2, bar.baz = 79 }, "quux {:?}", true);
info!({ foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
info!({ foo = 2, bar.baz = 78 }, "quux");
@@ -661,6 +714,9 @@
info!(?foo);
info!(%foo);
info!(foo);
+ info!("foo" = ?foo);
+ info!("foo" = %foo);
+ info!("foo" = foo);
info!(name: "foo", ?foo);
info!(name: "foo", %foo);
info!(name: "foo", foo);
@@ -673,6 +729,22 @@
info!(target: "foo_events", ?foo, true, "message");
info!(target: "foo_events", %foo, true, "message");
info!(target: "foo_events", foo, true, "message");
+ info!(name: "foo", target: "foo_events", ?foo);
+ info!(name: "foo", target: "foo_events", %foo);
+ info!(name: "foo", target: "foo_events", foo);
+ let foo = DisplayDebug;
+ info!(?foo);
+ info!(%foo);
+ info!(name: "foo", ?foo);
+ info!(name: "foo", %foo);
+ info!(name: "foo", ?foo, true, "message");
+ info!(name: "foo", %foo, true, "message");
+ info!(target: "foo_events", ?foo);
+ info!(target: "foo_events", %foo);
+ info!(target: "foo_events", ?foo, true, "message");
+ info!(target: "foo_events", %foo, true, "message");
+ info!(name: "foo", target: "foo_events", ?foo, true, "message");
+ info!(name: "foo", target: "foo_events", %foo, true, "message");
}
#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
@@ -681,12 +753,15 @@
warn!(foo = ?3, bar.baz = %2, quux = false);
warn!(foo = 3, bar.baz = 2, quux = false);
warn!(foo = 3, bar.baz = 3,);
+ warn!("foo" = 3, bar.baz = 3,);
+ warn!(foo = 3, "bar.baz" = 3,);
warn!("foo");
warn!("foo: {}", 3);
warn!(foo = ?3, bar.baz = %2, quux = false, "hello world {:?}", 42);
warn!(foo = 3, bar.baz = 2, quux = false, "hello world {:?}", 42);
warn!(foo = 3, bar.baz = 3, "hello world {:?}", 42,);
warn!({ foo = 3, bar.baz = 80 }, "quux");
+ warn!({ "foo" = 3, "bar.baz" = 80 }, "quux");
warn!({ foo = 2, bar.baz = 79 }, "quux {:?}", true);
warn!({ foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
warn!({ foo = 2, bar.baz = 78 }, "quux");
@@ -705,6 +780,9 @@
warn!(?foo);
warn!(%foo);
warn!(foo);
+ warn!("foo" = ?foo);
+ warn!("foo" = %foo);
+ warn!("foo" = foo);
warn!(name: "foo", ?foo);
warn!(name: "foo", %foo);
warn!(name: "foo", foo);
@@ -717,6 +795,22 @@
warn!(target: "foo_events", ?foo, true, "message");
warn!(target: "foo_events", %foo, true, "message");
warn!(target: "foo_events", foo, true, "message");
+ warn!(name: "foo", target: "foo_events", ?foo);
+ warn!(name: "foo", target: "foo_events", %foo);
+ warn!(name: "foo", target: "foo_events", foo);
+ let foo = DisplayDebug;
+ warn!(?foo);
+ warn!(%foo);
+ warn!(name: "foo", ?foo);
+ warn!(name: "foo", %foo);
+ warn!(name: "foo", ?foo, true, "message");
+ warn!(name: "foo", %foo, true, "message");
+ warn!(target: "foo_events", ?foo);
+ warn!(target: "foo_events", %foo);
+ warn!(target: "foo_events", ?foo, true, "message");
+ warn!(target: "foo_events", %foo, true, "message");
+ warn!(name: "foo", target: "foo_events", ?foo, true, "message");
+ warn!(name: "foo", target: "foo_events", %foo, true, "message");
}
#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
@@ -725,15 +819,18 @@
error!(foo = ?3, bar.baz = %2, quux = false);
error!(foo = 3, bar.baz = 2, quux = false);
error!(foo = 3, bar.baz = 3,);
+ error!("foo" = 3, bar.baz = 3,);
+ error!(foo = 3, "bar.baz" = 3,);
error!("foo");
error!("foo: {}", 3);
error!(foo = ?3, bar.baz = %2, quux = false, "hello world {:?}", 42);
error!(foo = 3, bar.baz = 2, quux = false, "hello world {:?}", 42);
error!(foo = 3, bar.baz = 3, "hello world {:?}", 42,);
error!({ foo = 3, bar.baz = 80 }, "quux");
+ error!({ "foo" = 3, "bar.baz" = 80 }, "quux");
error!({ foo = 2, bar.baz = 79 }, "quux {:?}", true);
error!({ foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
- error!({ foo = 2, bar.baz = 78, }, "quux");
+ error!({ foo = 2, bar.baz = 78 }, "quux");
error!({ foo = ?2, bar.baz = %78 }, "quux");
error!(name: "foo", foo = 3, bar.baz = 2, quux = false);
error!(name: "foo", target: "foo_events", foo = 3, bar.baz = 2, quux = false);
@@ -749,6 +846,9 @@
error!(?foo);
error!(%foo);
error!(foo);
+ error!("foo" = ?foo);
+ error!("foo" = %foo);
+ error!("foo" = foo);
error!(name: "foo", ?foo);
error!(name: "foo", %foo);
error!(name: "foo", foo);
@@ -761,6 +861,22 @@
error!(target: "foo_events", ?foo, true, "message");
error!(target: "foo_events", %foo, true, "message");
error!(target: "foo_events", foo, true, "message");
+ error!(name: "foo", target: "foo_events", ?foo);
+ error!(name: "foo", target: "foo_events", %foo);
+ error!(name: "foo", target: "foo_events", foo);
+ let foo = DisplayDebug;
+ error!(?foo);
+ error!(%foo);
+ error!(name: "foo", ?foo);
+ error!(name: "foo", %foo);
+ error!(name: "foo", ?foo, true, "message");
+ error!(name: "foo", %foo, true, "message");
+ error!(target: "foo_events", ?foo);
+ error!(target: "foo_events", %foo);
+ error!(target: "foo_events", ?foo, true, "message");
+ error!(target: "foo_events", %foo, true, "message");
+ error!(name: "foo", target: "foo_events", ?foo, true, "message");
+ error!(name: "foo", target: "foo_events", %foo, true, "message");
}
#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
diff --git a/crates/tracing/tests/missed_register_callsite.rs b/crates/tracing/tests/missed_register_callsite.rs
new file mode 100644
index 0000000..d14db12
--- /dev/null
+++ b/crates/tracing/tests/missed_register_callsite.rs
@@ -0,0 +1,109 @@
+use std::{
+ ptr,
+ sync::atomic::{AtomicPtr, Ordering},
+ thread::{self, JoinHandle},
+ time::Duration,
+};
+
+use tracing::Subscriber;
+use tracing_core::{span, Metadata};
+
+struct TestSubscriber {
+ creator_thread: String,
+ sleep: Duration,
+ callsite: AtomicPtr<Metadata<'static>>,
+}
+
+impl TestSubscriber {
+ fn new(sleep_micros: u64) -> Self {
+ let creator_thread = thread::current()
+ .name()
+ .unwrap_or("<unknown thread>")
+ .to_owned();
+ Self {
+ creator_thread,
+ sleep: Duration::from_micros(sleep_micros),
+ callsite: AtomicPtr::new(ptr::null_mut()),
+ }
+ }
+}
+
+impl Subscriber for TestSubscriber {
+ fn register_callsite(&self, metadata: &'static Metadata<'static>) -> tracing_core::Interest {
+ if !self.sleep.is_zero() {
+ thread::sleep(self.sleep);
+ }
+
+ self.callsite
+ .store(metadata as *const _ as *mut _, Ordering::SeqCst);
+ println!(
+ "{creator} from {thread:?}: register_callsite: {callsite:#?}",
+ creator = self.creator_thread,
+ callsite = metadata as *const _,
+ thread = thread::current().name(),
+ );
+ tracing_core::Interest::always()
+ }
+
+ fn event(&self, event: &tracing_core::Event<'_>) {
+ let stored_callsite = self.callsite.load(Ordering::SeqCst);
+ let event_callsite: *mut Metadata<'static> = event.metadata() as *const _ as *mut _;
+
+ println!(
+ "{creator} from {thread:?}: event (with callsite): {event_callsite:#?} (stored callsite: {stored_callsite:#?})",
+ creator = self.creator_thread,
+ thread = thread::current().name(),
+ );
+
+ // This assert is the actual test.
+ assert_eq!(
+ stored_callsite, event_callsite,
+ "stored callsite: {stored_callsite:#?} does not match event \
+ callsite: {event_callsite:#?}. Was `event` called before \
+ `register_callsite`?"
+ );
+ }
+
+ fn enabled(&self, _metadata: &Metadata<'_>) -> bool {
+ true
+ }
+ fn new_span(&self, _span: &span::Attributes<'_>) -> span::Id {
+ span::Id::from_u64(0)
+ }
+ fn record(&self, _span: &span::Id, _values: &span::Record<'_>) {}
+ fn record_follows_from(&self, _span: &span::Id, _follows: &span::Id) {}
+ fn enter(&self, _span: &tracing_core::span::Id) {}
+ fn exit(&self, _span: &tracing_core::span::Id) {}
+}
+
+fn subscriber_thread(idx: usize, register_sleep_micros: u64) -> JoinHandle<()> {
+ thread::Builder::new()
+ .name(format!("subscriber-{idx}"))
+ .spawn(move || {
+ // We use a sleep to ensure the starting order of the 2 threads.
+ let subscriber = TestSubscriber::new(register_sleep_micros);
+ let _subscriber_guard = tracing::subscriber::set_default(subscriber);
+
+ tracing::info!("event-from-{idx}", idx = idx);
+
+ // Wait a bit for everything to end (we don't want to remove the subscriber
+ // immediately because that will mix up the test).
+ thread::sleep(Duration::from_millis(100));
+ })
+ .expect("failed to spawn thread")
+}
+
+#[test]
+fn event_before_register() {
+ let subscriber_1_register_sleep_micros = 100;
+ let subscriber_2_register_sleep_micros = 0;
+
+ let jh1 = subscriber_thread(1, subscriber_1_register_sleep_micros);
+
+ // This delay ensures that the event!() in the first thread is executed first.
+ thread::sleep(Duration::from_micros(50));
+ let jh2 = subscriber_thread(2, subscriber_2_register_sleep_micros);
+
+ jh1.join().expect("failed to join thread");
+ jh2.join().expect("failed to join thread");
+}
diff --git a/crates/tracing/tests/scoped_clobbers_default.rs b/crates/tracing/tests/scoped_clobbers_default.rs
index dfd6fc9..41bb138 100644
--- a/crates/tracing/tests/scoped_clobbers_default.rs
+++ b/crates/tracing/tests/scoped_clobbers_default.rs
@@ -1,18 +1,18 @@
#![cfg(feature = "std")]
-use tracing_mock::*;
+use tracing_mock::{expect, subscriber};
#[test]
fn scoped_clobbers_global() {
// Reproduces https://github.com/tokio-rs/tracing/issues/2050
let (scoped, scoped_handle) = subscriber::mock()
- .event(event::msg("before global"))
- .event(event::msg("before drop"))
+ .event(expect::event().with_fields(expect::msg("before global")))
+ .event(expect::event().with_fields(expect::msg("before drop")))
.only()
.run_with_handle();
let (global, global_handle) = subscriber::mock()
- .event(event::msg("after drop"))
+ .event(expect::event().with_fields(expect::msg("after drop")))
.only()
.run_with_handle();
diff --git a/crates/tracing/tests/span.rs b/crates/tracing/tests/span.rs
index 09f1be8..9f4e5c4 100644
--- a/crates/tracing/tests/span.rs
+++ b/crates/tracing/tests/span.rs
@@ -6,6 +6,7 @@
use std::thread;
use tracing::{
+ error_span,
field::{debug, display},
subscriber::with_default,
Level, Span,
@@ -342,7 +343,7 @@
fn moved_field() {
let (subscriber, handle) = subscriber::mock()
.new_span(
- expect::span().named("foo").with_field(
+ expect::span().named("foo").with_fields(
expect::field("bar")
.with_value(&display("hello from my span"))
.only(),
@@ -373,7 +374,7 @@
.new_span(
expect::span()
.named("foo")
- .with_field(expect::field("fields.bar").with_value(&true).only()),
+ .with_fields(expect::field("fields.bar").with_value(&true).only()),
)
.only()
.run_with_handle();
@@ -389,7 +390,7 @@
fn borrowed_field() {
let (subscriber, handle) = subscriber::mock()
.new_span(
- expect::span().named("foo").with_field(
+ expect::span().named("foo").with_fields(
expect::field("bar")
.with_value(&display("hello from my span"))
.only(),
@@ -432,7 +433,7 @@
};
let (subscriber, handle) = subscriber::mock()
.new_span(
- expect::span().named("foo").with_field(
+ expect::span().named("foo").with_fields(
expect::field("x")
.with_value(&debug(3.234))
.and(expect::field("y").with_value(&debug(-1.223)))
@@ -442,7 +443,7 @@
.new_span(
expect::span()
.named("bar")
- .with_field(expect::field("position").with_value(&debug(&pos)).only()),
+ .with_fields(expect::field("position").with_value(&debug(&pos)).only()),
)
.run_with_handle();
@@ -465,7 +466,7 @@
fn float_values() {
let (subscriber, handle) = subscriber::mock()
.new_span(
- expect::span().named("foo").with_field(
+ expect::span().named("foo").with_fields(
expect::field("x")
.with_value(&3.234)
.and(expect::field("y").with_value(&-1.223))
@@ -492,7 +493,7 @@
.new_span(
expect::span()
.named("foo")
- .with_field(expect::field("bar").with_value(&5)
+ .with_fields(expect::field("bar").with_value(&5)
.and(expect::field("baz").with_value).only()),
)
.record(
@@ -549,7 +550,7 @@
fn record_new_value_for_field() {
let (subscriber, handle) = subscriber::mock()
.new_span(
- expect::span().named("foo").with_field(
+ expect::span().named("foo").with_fields(
expect::field("bar")
.with_value(&5)
.and(expect::field("baz").with_value(&false))
@@ -580,7 +581,7 @@
fn record_new_values_for_fields() {
let (subscriber, handle) = subscriber::mock()
.new_span(
- expect::span().named("foo").with_field(
+ expect::span().named("foo").with_fields(
expect::field("bar")
.with_value(&4)
.and(expect::field("baz").with_value(&false))
@@ -635,7 +636,11 @@
#[test]
fn explicit_root_span_is_root() {
let (subscriber, handle) = subscriber::mock()
- .new_span(expect::span().named("foo").with_explicit_parent(None))
+ .new_span(
+ expect::span()
+ .named("foo")
+ .with_ancestry(expect::is_explicit_root()),
+ )
.only()
.run_with_handle();
@@ -652,7 +657,11 @@
let (subscriber, handle) = subscriber::mock()
.new_span(expect::span().named("foo"))
.enter(expect::span().named("foo"))
- .new_span(expect::span().named("bar").with_explicit_parent(None))
+ .new_span(
+ expect::span()
+ .named("bar")
+ .with_ancestry(expect::is_explicit_root()),
+ )
.exit(expect::span().named("foo"))
.only()
.run_with_handle();
@@ -674,7 +683,7 @@
.new_span(
expect::span()
.named("bar")
- .with_explicit_parent(Some("foo")),
+ .with_ancestry(expect::has_explicit_parent("foo")),
)
.only()
.run_with_handle();
@@ -692,11 +701,31 @@
fn explicit_child_at_levels() {
let (subscriber, handle) = subscriber::mock()
.new_span(expect::span().named("foo"))
- .new_span(expect::span().named("a").with_explicit_parent(Some("foo")))
- .new_span(expect::span().named("b").with_explicit_parent(Some("foo")))
- .new_span(expect::span().named("c").with_explicit_parent(Some("foo")))
- .new_span(expect::span().named("d").with_explicit_parent(Some("foo")))
- .new_span(expect::span().named("e").with_explicit_parent(Some("foo")))
+ .new_span(
+ expect::span()
+ .named("a")
+ .with_ancestry(expect::has_explicit_parent("foo")),
+ )
+ .new_span(
+ expect::span()
+ .named("b")
+ .with_ancestry(expect::has_explicit_parent("foo")),
+ )
+ .new_span(
+ expect::span()
+ .named("c")
+ .with_ancestry(expect::has_explicit_parent("foo")),
+ )
+ .new_span(
+ expect::span()
+ .named("d")
+ .with_ancestry(expect::has_explicit_parent("foo")),
+ )
+ .new_span(
+ expect::span()
+ .named("e")
+ .with_ancestry(expect::has_explicit_parent("foo")),
+ )
.only()
.run_with_handle();
@@ -722,7 +751,7 @@
.new_span(
expect::span()
.named("baz")
- .with_explicit_parent(Some("foo")),
+ .with_ancestry(expect::has_explicit_parent("foo")),
)
.exit(expect::span().named("bar"))
.only()
@@ -741,7 +770,11 @@
#[test]
fn contextual_root() {
let (subscriber, handle) = subscriber::mock()
- .new_span(expect::span().named("foo").with_contextual_parent(None))
+ .new_span(
+ expect::span()
+ .named("foo")
+ .with_ancestry(expect::is_contextual_root()),
+ )
.only()
.run_with_handle();
@@ -761,7 +794,7 @@
.new_span(
expect::span()
.named("bar")
- .with_contextual_parent(Some("foo")),
+ .with_ancestry(expect::has_contextual_parent("foo")),
)
.exit(expect::span().named("foo"))
.only()
@@ -781,7 +814,7 @@
fn display_shorthand() {
let (subscriber, handle) = subscriber::mock()
.new_span(
- expect::span().named("my_span").with_field(
+ expect::span().named("my_span").with_fields(
expect::field("my_field")
.with_value(&display("hello world"))
.only(),
@@ -801,7 +834,7 @@
fn debug_shorthand() {
let (subscriber, handle) = subscriber::mock()
.new_span(
- expect::span().named("my_span").with_field(
+ expect::span().named("my_span").with_fields(
expect::field("my_field")
.with_value(&debug("hello world"))
.only(),
@@ -821,7 +854,7 @@
fn both_shorthands() {
let (subscriber, handle) = subscriber::mock()
.new_span(
- expect::span().named("my_span").with_field(
+ expect::span().named("my_span").with_fields(
expect::field("display_field")
.with_value(&display("hello world"))
.and(expect::field("debug_field").with_value(&debug("hello world")))
@@ -842,7 +875,7 @@
fn constant_field_name() {
let (subscriber, handle) = subscriber::mock()
.new_span(
- expect::span().named("my_span").with_field(
+ expect::span().named("my_span").with_fields(
expect::field("foo")
.with_value(&"bar")
.and(expect::field("constant string").with_value(&"also works"))
@@ -866,3 +899,20 @@
handle.assert_finished();
}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn keyword_ident_in_field_name_span_macro() {
+ #[derive(Debug)]
+ struct Foo;
+
+ let (subscriber, handle) = subscriber::mock()
+ .new_span(expect::span().with_fields(expect::field("self").with_value(&debug(Foo)).only()))
+ .only()
+ .run_with_handle();
+
+ with_default(subscriber, || {
+ error_span!("span", self = ?Foo);
+ });
+ handle.assert_finished();
+}
diff --git a/crates/tracing/tests/subscriber.rs b/crates/tracing/tests/subscriber.rs
index f676efe..1b98628 100644
--- a/crates/tracing/tests/subscriber.rs
+++ b/crates/tracing/tests/subscriber.rs
@@ -60,7 +60,7 @@
fn boxed_subscriber() {
let (subscriber, handle) = subscriber::mock()
.new_span(
- expect::span().named("foo").with_field(
+ expect::span().named("foo").with_fields(
expect::field("bar")
.with_value(&display("hello from my span"))
.only(),
@@ -93,7 +93,7 @@
let (subscriber, handle) = subscriber::mock()
.new_span(
- expect::span().named("foo").with_field(
+ expect::span().named("foo").with_fields(
expect::field("bar")
.with_value(&display("hello from my span"))
.only(),
diff --git a/pseudo_crate/Cargo.lock b/pseudo_crate/Cargo.lock
index 6854b57..c8d8077 100644
--- a/pseudo_crate/Cargo.lock
+++ b/pseudo_crate/Cargo.lock
@@ -5413,9 +5413,9 @@
[[package]]
name = "tracing"
-version = "0.1.40"
+version = "0.1.41"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef"
+checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0"
dependencies = [
"log",
"pin-project-lite",
diff --git a/pseudo_crate/Cargo.toml b/pseudo_crate/Cargo.toml
index 542fea7..e3a8e9e 100644
--- a/pseudo_crate/Cargo.toml
+++ b/pseudo_crate/Cargo.toml
@@ -342,7 +342,7 @@
tower = "=0.4.13"
tower-layer = "=0.3.3"
tower-service = "=0.3.3"
-tracing = "=0.1.40"
+tracing = "=0.1.41"
tracing-attributes = "=0.1.28"
tracing-core = "=0.1.33"
tracing-subscriber = "=0.3.19"