macros.rs 43 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963
  1. #![deny(warnings)]
  2. use tracing::{
  3. callsite, debug, debug_span, enabled, error, error_span, event, event_enabled, info, info_span,
  4. span, span_enabled, trace, trace_span, warn, warn_span, Level,
  5. };
  6. // Tests that macros work across various invocation syntax.
  7. //
  8. // These are quite repetitive, and _could_ be generated by a macro. However,
  9. // they're compile-time tests, so I want to get line numbers etc out of
  10. // failures, and producing them with a macro would muddy the waters a bit.
  11. #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
  12. #[test]
  13. fn span() {
  14. span!(target: "foo_events", Level::DEBUG, "foo", bar.baz = ?2, quux = %3, quuux = 4);
  15. span!(target: "foo_events", Level::DEBUG, "foo", bar.baz = 2, quux = 3);
  16. span!(target: "foo_events", Level::DEBUG, "foo", bar.baz = 2, quux = 4,);
  17. span!(target: "foo_events", Level::DEBUG, "foo");
  18. span!(target: "foo_events", Level::DEBUG, "bar",);
  19. span!(Level::DEBUG, "foo", bar.baz = 2, quux = 3);
  20. span!(Level::DEBUG, "foo", bar.baz = 2, quux = 4,);
  21. span!(Level::DEBUG, "foo", bar.baz = 2, quux = 3);
  22. span!(Level::DEBUG, "foo", bar.baz = 2, quux = 4,);
  23. span!(Level::DEBUG, "foo", bar.baz = ?2);
  24. span!(Level::DEBUG, "foo", bar.baz = %2);
  25. span!(Level::DEBUG, "foo");
  26. span!(Level::DEBUG, "bar",);
  27. }
  28. #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
  29. #[test]
  30. fn trace_span() {
  31. trace_span!(target: "foo_events", "foo", bar.baz = ?2, quux = %3, quuux = 4);
  32. trace_span!(target: "foo_events", "foo", bar.baz = 2, quux = 3);
  33. trace_span!(target: "foo_events", "foo", bar.baz = 2, quux = 4,);
  34. trace_span!(target: "foo_events", "foo");
  35. trace_span!(target: "foo_events", "bar",);
  36. trace_span!("foo", bar.baz = 2, quux = 3);
  37. trace_span!("foo", bar.baz = 2, quux = 4,);
  38. trace_span!("foo", bar.baz = ?2);
  39. trace_span!("foo", bar.baz = %2);
  40. trace_span!("bar");
  41. trace_span!("bar",);
  42. }
  43. #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
  44. #[test]
  45. fn debug_span() {
  46. debug_span!(target: "foo_events", "foo", bar.baz = ?2, quux = %3, quuux = 4);
  47. debug_span!(target: "foo_events", "foo", bar.baz = 2, quux = 3);
  48. debug_span!(target: "foo_events", "foo", bar.baz = 2, quux = 4,);
  49. debug_span!(target: "foo_events", "foo");
  50. debug_span!(target: "foo_events", "bar",);
  51. debug_span!("foo", bar.baz = 2, quux = 3);
  52. debug_span!("foo", bar.baz = 2, quux = 4,);
  53. debug_span!("foo", bar.baz = ?2);
  54. debug_span!("foo", bar.baz = %2);
  55. debug_span!("bar");
  56. debug_span!("bar",);
  57. }
  58. #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
  59. #[test]
  60. fn info_span() {
  61. info_span!(target: "foo_events", "foo", bar.baz = ?2, quux = %3, quuux = 4);
  62. info_span!(target: "foo_events", "foo", bar.baz = 2, quux = 3);
  63. info_span!(target: "foo_events", "foo", bar.baz = 2, quux = 4,);
  64. info_span!(target: "foo_events", "foo");
  65. info_span!(target: "foo_events", "bar",);
  66. info_span!("foo", bar.baz = 2, quux = 3);
  67. info_span!("foo", bar.baz = 2, quux = 4,);
  68. info_span!("foo", bar.baz = ?2);
  69. info_span!("foo", bar.baz = %2);
  70. info_span!("bar");
  71. info_span!("bar",);
  72. }
  73. #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
  74. #[test]
  75. fn warn_span() {
  76. warn_span!(target: "foo_events", "foo", bar.baz = ?2, quux = %3, quuux = 4);
  77. warn_span!(target: "foo_events", "foo", bar.baz = 2, quux = 3);
  78. warn_span!(target: "foo_events", "foo", bar.baz = 2, quux = 4,);
  79. warn_span!(target: "foo_events", "foo");
  80. warn_span!(target: "foo_events", "bar",);
  81. warn_span!("foo", bar.baz = 2, quux = 3);
  82. warn_span!("foo", bar.baz = 2, quux = 4,);
  83. warn_span!("foo", bar.baz = ?2);
  84. warn_span!("foo", bar.baz = %2);
  85. warn_span!("bar");
  86. warn_span!("bar",);
  87. }
  88. #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
  89. #[test]
  90. fn error_span() {
  91. error_span!(target: "foo_events", "foo", bar.baz = ?2, quux = %3, quuux = 4);
  92. error_span!(target: "foo_events", "foo", bar.baz = 2, quux = 3);
  93. error_span!(target: "foo_events", "foo", bar.baz = 2, quux = 4,);
  94. error_span!(target: "foo_events", "foo");
  95. error_span!(target: "foo_events", "bar",);
  96. error_span!("foo", bar.baz = 2, quux = 3);
  97. error_span!("foo", bar.baz = 2, quux = 4,);
  98. error_span!("foo", bar.baz = ?2);
  99. error_span!("foo", bar.baz = %2);
  100. error_span!("bar");
  101. error_span!("bar",);
  102. }
  103. #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
  104. #[test]
  105. fn span_root() {
  106. span!(target: "foo_events", parent: None, Level::TRACE, "foo", bar.baz = 2, quux = 3);
  107. span!(target: "foo_events", parent: None, Level::TRACE, "foo", bar.baz = 2, quux = 3);
  108. span!(target: "foo_events", parent: None, Level::TRACE, "foo", bar.baz = 2, quux = 4,);
  109. span!(target: "foo_events", parent: None, Level::TRACE, "foo");
  110. span!(target: "foo_events", parent: None, Level::TRACE, "bar",);
  111. span!(parent: None, Level::DEBUG, "foo", bar.baz = 2, quux = 3);
  112. span!(parent: None, Level::DEBUG, "foo", bar.baz = 2, quux = 4,);
  113. span!(parent: None, Level::DEBUG, "foo");
  114. span!(parent: None, Level::DEBUG, "bar",);
  115. }
  116. #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
  117. #[test]
  118. fn trace_span_root() {
  119. trace_span!(target: "foo_events", parent: None, "foo", bar.baz = 2, quux = 3);
  120. trace_span!(target: "foo_events", parent: None, "foo", bar.baz = 2, quux = 4,);
  121. trace_span!(target: "foo_events", parent: None, "foo");
  122. trace_span!(target: "foo_events", parent: None, "bar",);
  123. trace_span!(parent: None, "foo", bar.baz = 2, quux = 3);
  124. trace_span!(parent: None, "foo", bar.baz = 2, quux = 4,);
  125. trace_span!(parent: None, "foo");
  126. trace_span!(parent: None, "bar",);
  127. }
  128. #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
  129. #[test]
  130. fn debug_span_root() {
  131. debug_span!(target: "foo_events", parent: None, "foo", bar.baz = 2, quux = 3);
  132. debug_span!(target: "foo_events", parent: None, "foo", bar.baz = 2, quux = 4,);
  133. debug_span!(target: "foo_events", parent: None, "foo");
  134. debug_span!(target: "foo_events", parent: None, "bar",);
  135. debug_span!(parent: None, "foo", bar.baz = 2, quux = 3);
  136. debug_span!(parent: None, "foo", bar.baz = 2, quux = 4,);
  137. debug_span!(parent: None, "foo");
  138. debug_span!(parent: None, "bar",);
  139. }
  140. #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
  141. #[test]
  142. fn info_span_root() {
  143. info_span!(target: "foo_events", parent: None, "foo", bar.baz = 2, quux = 3);
  144. info_span!(target: "foo_events", parent: None, "foo", bar.baz = 2, quux = 4,);
  145. info_span!(target: "foo_events", parent: None, "foo");
  146. info_span!(target: "foo_events", parent: None, "bar",);
  147. info_span!(parent: None, "foo", bar.baz = 2, quux = 3);
  148. info_span!(parent: None, "foo", bar.baz = 2, quux = 4,);
  149. info_span!(parent: None, "foo");
  150. info_span!(parent: None, "bar",);
  151. }
  152. #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
  153. #[test]
  154. fn warn_span_root() {
  155. warn_span!(target: "foo_events", parent: None, "foo", bar.baz = 2, quux = 3);
  156. warn_span!(target: "foo_events", parent: None, "foo", bar.baz = 2, quux = 4,);
  157. warn_span!(target: "foo_events", parent: None, "foo");
  158. warn_span!(target: "foo_events", parent: None, "bar",);
  159. warn_span!(parent: None, "foo", bar.baz = 2, quux = 3);
  160. warn_span!(parent: None, "foo", bar.baz = 2, quux = 4,);
  161. warn_span!(parent: None, "foo");
  162. warn_span!(parent: None, "bar",);
  163. }
  164. #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
  165. #[test]
  166. fn error_span_root() {
  167. error_span!(target: "foo_events", parent: None, "foo", bar.baz = 2, quux = 3);
  168. error_span!(target: "foo_events", parent: None, "foo", bar.baz = 2, quux = 4,);
  169. error_span!(target: "foo_events", parent: None, "foo");
  170. error_span!(target: "foo_events", parent: None, "bar",);
  171. error_span!(parent: None, "foo", bar.baz = 2, quux = 3);
  172. error_span!(parent: None, "foo", bar.baz = 2, quux = 4,);
  173. error_span!(parent: None, "foo");
  174. error_span!(parent: None, "bar",);
  175. }
  176. #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
  177. #[test]
  178. fn span_with_parent() {
  179. let p = span!(Level::TRACE, "im_a_parent!");
  180. span!(target: "foo_events", parent: &p, Level::TRACE, "foo", bar.baz = 2, quux = 3);
  181. span!(target: "foo_events", parent: &p, Level::TRACE, "foo", bar.baz = 2, quux = 4,);
  182. span!(target: "foo_events", parent: &p, Level::TRACE, "foo");
  183. span!(target: "foo_events", parent: &p, Level::TRACE, "bar",);
  184. span!(parent: &p, Level::DEBUG, "foo", bar.baz = 2, quux = 3);
  185. span!(parent: &p, Level::DEBUG, "foo", bar.baz = 2, quux = 4,);
  186. span!(parent: &p, Level::DEBUG, "foo");
  187. span!(parent: &p, Level::DEBUG, "bar",);
  188. }
  189. #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
  190. #[test]
  191. fn trace_span_with_parent() {
  192. let p = span!(Level::TRACE, "im_a_parent!");
  193. trace_span!(target: "foo_events", parent: &p, "foo", bar.baz = 2, quux = 3);
  194. trace_span!(target: "foo_events", parent: &p, "foo", bar.baz = 2, quux = 4,);
  195. trace_span!(target: "foo_events", parent: &p, "foo");
  196. trace_span!(target: "foo_events", parent: &p, "bar",);
  197. trace_span!(parent: &p, "foo", bar.baz = 2, quux = 3);
  198. trace_span!(parent: &p, "foo", bar.baz = 2, quux = 4,);
  199. trace_span!(parent: &p, "foo");
  200. trace_span!(parent: &p, "bar",);
  201. }
  202. #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
  203. #[test]
  204. fn debug_span_with_parent() {
  205. let p = span!(Level::TRACE, "im_a_parent!");
  206. debug_span!(target: "foo_events", parent: &p, "foo", bar.baz = 2, quux = 3);
  207. debug_span!(target: "foo_events", parent: &p, "foo", bar.baz = 2, quux = 4,);
  208. debug_span!(target: "foo_events", parent: &p, "foo");
  209. debug_span!(target: "foo_events", parent: &p, "bar",);
  210. debug_span!(parent: &p, "foo", bar.baz = 2, quux = 3);
  211. debug_span!(parent: &p, "foo", bar.baz = 2, quux = 4,);
  212. debug_span!(parent: &p, "foo");
  213. debug_span!(parent: &p, "bar",);
  214. }
  215. #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
  216. #[test]
  217. fn info_span_with_parent() {
  218. let p = span!(Level::TRACE, "im_a_parent!");
  219. info_span!(target: "foo_events", parent: &p, "foo", bar.baz = 2, quux = 3);
  220. info_span!(target: "foo_events", parent: &p, "foo", bar.baz = 2, quux = 4,);
  221. info_span!(target: "foo_events", parent: &p, "foo");
  222. info_span!(target: "foo_events", parent: &p, "bar",);
  223. info_span!(parent: &p, "foo", bar.baz = 2, quux = 3);
  224. info_span!(parent: &p, "foo", bar.baz = 2, quux = 4,);
  225. info_span!(parent: &p, "foo");
  226. info_span!(parent: &p, "bar",);
  227. }
  228. #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
  229. #[test]
  230. fn warn_span_with_parent() {
  231. let p = span!(Level::TRACE, "im_a_parent!");
  232. warn_span!(target: "foo_events", parent: &p, "foo", bar.baz = 2, quux = 3);
  233. warn_span!(target: "foo_events", parent: &p, "foo", bar.baz = 2, quux = 4,);
  234. warn_span!(target: "foo_events", parent: &p, "foo");
  235. warn_span!(target: "foo_events", parent: &p, "bar",);
  236. warn_span!(parent: &p, "foo", bar.baz = 2, quux = 3);
  237. warn_span!(parent: &p, "foo", bar.baz = 2, quux = 4,);
  238. warn_span!(parent: &p, "foo");
  239. warn_span!(parent: &p, "bar",);
  240. }
  241. #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
  242. #[test]
  243. fn error_span_with_parent() {
  244. let p = span!(Level::TRACE, "im_a_parent!");
  245. error_span!(target: "foo_events", parent: &p, "foo", bar.baz = 2, quux = 3);
  246. error_span!(target: "foo_events", parent: &p, "foo", bar.baz = 2, quux = 4,);
  247. error_span!(target: "foo_events", parent: &p, "foo");
  248. error_span!(target: "foo_events", parent: &p, "bar",);
  249. error_span!(parent: &p, "foo", bar.baz = 2, quux = 3);
  250. error_span!(parent: &p, "foo", bar.baz = 2, quux = 4,);
  251. error_span!(parent: &p, "foo");
  252. error_span!(parent: &p, "bar",);
  253. }
  254. #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
  255. #[test]
  256. fn span_with_non_rust_symbol() {
  257. span!(Level::TRACE, "non-rust", "guid:x-request-id" = ?"abcdef", "more {}", 42);
  258. span!(Level::TRACE, "non-rust", "guid:x-request-id" = %"abcdef", "more {}", 51);
  259. span!(
  260. Level::TRACE,
  261. "non-rust",
  262. "guid:x-request-id" = "abcdef",
  263. "more {}",
  264. 60
  265. );
  266. span!(Level::TRACE, "non-rust", "guid:x-request-id" = ?"abcdef");
  267. span!(Level::TRACE, "non-rust", "guid:x-request-id" = %"abcdef");
  268. span!(Level::TRACE, "non-rust", "guid:x-request-id" = "abcdef");
  269. }
  270. #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
  271. #[test]
  272. fn event() {
  273. event!(Level::DEBUG, foo = ?3, bar.baz = %2, quux = false);
  274. event!(Level::DEBUG, foo = 3, bar.baz = 2, quux = false);
  275. event!(Level::DEBUG, foo = 3, bar.baz = 3,);
  276. event!(Level::DEBUG, "foo");
  277. event!(Level::DEBUG, "foo: {}", 3);
  278. event!(Level::INFO, foo = ?3, bar.baz = %2, quux = false, "hello world {:?}", 42);
  279. event!(
  280. Level::INFO,
  281. foo = 3,
  282. bar.baz = 2,
  283. quux = false,
  284. "hello world {:?}",
  285. 42
  286. );
  287. event!(Level::INFO, foo = 3, bar.baz = 3, "hello world {:?}", 42,);
  288. event!(Level::DEBUG, { foo = 3, bar.baz = 80 }, "quux");
  289. event!(Level::DEBUG, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
  290. event!(Level::DEBUG, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
  291. event!(Level::DEBUG, { foo = ?2, bar.baz = %78 }, "quux");
  292. event!(target: "foo_events", Level::DEBUG, foo = 3, bar.baz = 2, quux = false);
  293. event!(target: "foo_events", Level::DEBUG, foo = 3, bar.baz = 3,);
  294. event!(target: "foo_events", Level::DEBUG, "foo");
  295. event!(target: "foo_events", Level::DEBUG, "foo: {}", 3);
  296. event!(target: "foo_events", Level::DEBUG, { foo = 3, bar.baz = 80 }, "quux");
  297. event!(target: "foo_events", Level::DEBUG, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
  298. event!(target: "foo_events", Level::DEBUG, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
  299. event!(target: "foo_events", Level::DEBUG, { foo = 2, bar.baz = 78, }, "quux");
  300. let foo = 1;
  301. event!(Level::DEBUG, ?foo);
  302. event!(Level::DEBUG, %foo);
  303. event!(Level::DEBUG, foo);
  304. }
  305. #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
  306. #[test]
  307. fn enabled() {
  308. enabled!(Level::DEBUG, foo, bar.baz, quux,);
  309. enabled!(Level::DEBUG, message);
  310. enabled!(Level::INFO, foo, bar.baz, quux, message,);
  311. enabled!(Level::INFO, foo, bar., message,);
  312. enabled!(Level::DEBUG, foo);
  313. enabled!(Level::DEBUG);
  314. enabled!(target: "rando", Level::DEBUG);
  315. enabled!(target: "rando", Level::DEBUG, field);
  316. }
  317. #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
  318. #[test]
  319. fn span_enabled() {
  320. span_enabled!(Level::DEBUG, foo, bar.baz, quux,);
  321. span_enabled!(Level::DEBUG, message);
  322. span_enabled!(Level::INFO, foo, bar.baz, quux, message,);
  323. span_enabled!(Level::INFO, foo, bar., message,);
  324. span_enabled!(Level::DEBUG, foo);
  325. span_enabled!(Level::DEBUG);
  326. span_enabled!(target: "rando", Level::DEBUG);
  327. span_enabled!(target: "rando", Level::DEBUG, field);
  328. }
  329. #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
  330. #[test]
  331. fn event_enabled() {
  332. event_enabled!(Level::DEBUG, foo, bar.baz, quux,);
  333. event_enabled!(Level::DEBUG, message);
  334. event_enabled!(Level::INFO, foo, bar.baz, quux, message,);
  335. event_enabled!(Level::INFO, foo, bar., message,);
  336. event_enabled!(Level::DEBUG, foo);
  337. event_enabled!(Level::DEBUG);
  338. event_enabled!(target: "rando", Level::DEBUG);
  339. event_enabled!(target: "rando", Level::DEBUG, field);
  340. }
  341. #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
  342. #[test]
  343. fn locals_with_message() {
  344. let data = (42, "forty-two");
  345. let private_data = "private";
  346. let error = "a bad error";
  347. event!(Level::ERROR, %error, "Received error");
  348. event!(
  349. target: "app_events",
  350. Level::WARN,
  351. private_data,
  352. ?data,
  353. "App warning: {}",
  354. error
  355. );
  356. }
  357. #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
  358. #[test]
  359. fn locals_no_message() {
  360. let data = (42, "forty-two");
  361. let private_data = "private";
  362. let error = "a bad error";
  363. event!(
  364. target: "app_events",
  365. Level::WARN,
  366. private_data,
  367. ?data,
  368. );
  369. event!(
  370. target: "app_events",
  371. Level::WARN,
  372. private_data,
  373. ?data,
  374. error,
  375. );
  376. event!(
  377. target: "app_events",
  378. Level::WARN,
  379. private_data,
  380. ?data,
  381. error
  382. );
  383. event!(Level::WARN, private_data, ?data, error,);
  384. }
  385. #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
  386. #[test]
  387. fn trace() {
  388. trace!(foo = ?3, bar.baz = %2, quux = false);
  389. trace!(foo = 3, bar.baz = 2, quux = false);
  390. trace!(foo = 3, bar.baz = 3,);
  391. trace!("foo");
  392. trace!("foo: {}", 3);
  393. trace!(foo = ?3, bar.baz = %2, quux = false, "hello world {:?}", 42);
  394. trace!(foo = 3, bar.baz = 2, quux = false, "hello world {:?}", 42);
  395. trace!(foo = 3, bar.baz = 3, "hello world {:?}", 42,);
  396. trace!({ foo = 3, bar.baz = 80 }, "quux");
  397. trace!({ foo = 2, bar.baz = 79 }, "quux {:?}", true);
  398. trace!({ foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
  399. trace!({ foo = 2, bar.baz = 78 }, "quux");
  400. trace!({ foo = ?2, bar.baz = %78 }, "quux");
  401. trace!(target: "foo_events", foo = 3, bar.baz = 2, quux = false);
  402. trace!(target: "foo_events", foo = 3, bar.baz = 3,);
  403. trace!(target: "foo_events", "foo");
  404. trace!(target: "foo_events", "foo: {}", 3);
  405. trace!(target: "foo_events", { foo = 3, bar.baz = 80 }, "quux");
  406. trace!(target: "foo_events", { foo = 2, bar.baz = 79 }, "quux {:?}", true);
  407. trace!(target: "foo_events", { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
  408. trace!(target: "foo_events", { foo = 2, bar.baz = 78, }, "quux");
  409. let foo = 1;
  410. trace!(?foo);
  411. trace!(%foo);
  412. trace!(foo);
  413. trace!(target: "foo_events", ?foo);
  414. trace!(target: "foo_events", %foo);
  415. trace!(target: "foo_events", foo);
  416. trace!(target: "foo_events", ?foo, true, "message");
  417. trace!(target: "foo_events", %foo, true, "message");
  418. trace!(target: "foo_events", foo, true, "message");
  419. }
  420. #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
  421. #[test]
  422. fn debug() {
  423. debug!(foo = ?3, bar.baz = %2, quux = false);
  424. debug!(foo = 3, bar.baz = 2, quux = false);
  425. debug!(foo = 3, bar.baz = 3,);
  426. debug!("foo");
  427. debug!("foo: {}", 3);
  428. debug!(foo = ?3, bar.baz = %2, quux = false, "hello world {:?}", 42);
  429. debug!(foo = 3, bar.baz = 2, quux = false, "hello world {:?}", 42);
  430. debug!(foo = 3, bar.baz = 3, "hello world {:?}", 42,);
  431. debug!({ foo = 3, bar.baz = 80 }, "quux");
  432. debug!({ foo = 2, bar.baz = 79 }, "quux {:?}", true);
  433. debug!({ foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
  434. debug!({ foo = 2, bar.baz = 78 }, "quux");
  435. debug!({ foo = ?2, bar.baz = %78 }, "quux");
  436. debug!(target: "foo_events", foo = 3, bar.baz = 2, quux = false);
  437. debug!(target: "foo_events", foo = 3, bar.baz = 3,);
  438. debug!(target: "foo_events", "foo");
  439. debug!(target: "foo_events", "foo: {}", 3);
  440. debug!(target: "foo_events", { foo = 3, bar.baz = 80 }, "quux");
  441. debug!(target: "foo_events", { foo = 2, bar.baz = 79 }, "quux {:?}", true);
  442. debug!(target: "foo_events", { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
  443. debug!(target: "foo_events", { foo = 2, bar.baz = 78, }, "quux");
  444. let foo = 1;
  445. debug!(?foo);
  446. debug!(%foo);
  447. debug!(foo);
  448. debug!(target: "foo_events", ?foo);
  449. debug!(target: "foo_events", %foo);
  450. debug!(target: "foo_events", foo);
  451. debug!(target: "foo_events", ?foo, true, "message");
  452. debug!(target: "foo_events", %foo, true, "message");
  453. debug!(target: "foo_events", foo, true, "message");
  454. }
  455. #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
  456. #[test]
  457. fn info() {
  458. info!(foo = ?3, bar.baz = %2, quux = false);
  459. info!(foo = 3, bar.baz = 2, quux = false);
  460. info!(foo = 3, bar.baz = 3,);
  461. info!("foo");
  462. info!("foo: {}", 3);
  463. info!(foo = ?3, bar.baz = %2, quux = false, "hello world {:?}", 42);
  464. info!(foo = 3, bar.baz = 2, quux = false, "hello world {:?}", 42);
  465. info!(foo = 3, bar.baz = 3, "hello world {:?}", 42,);
  466. info!({ foo = 3, bar.baz = 80 }, "quux");
  467. info!({ foo = 2, bar.baz = 79 }, "quux {:?}", true);
  468. info!({ foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
  469. info!({ foo = 2, bar.baz = 78 }, "quux");
  470. info!({ foo = ?2, bar.baz = %78 }, "quux");
  471. info!(target: "foo_events", foo = 3, bar.baz = 2, quux = false);
  472. info!(target: "foo_events", foo = 3, bar.baz = 3,);
  473. info!(target: "foo_events", "foo");
  474. info!(target: "foo_events", "foo: {}", 3);
  475. info!(target: "foo_events", { foo = 3, bar.baz = 80 }, "quux");
  476. info!(target: "foo_events", { foo = 2, bar.baz = 79 }, "quux {:?}", true);
  477. info!(target: "foo_events", { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
  478. info!(target: "foo_events", { foo = 2, bar.baz = 78, }, "quux");
  479. let foo = 1;
  480. info!(?foo);
  481. info!(%foo);
  482. info!(foo);
  483. info!(target: "foo_events", ?foo);
  484. info!(target: "foo_events", %foo);
  485. info!(target: "foo_events", foo);
  486. info!(target: "foo_events", ?foo, true, "message");
  487. info!(target: "foo_events", %foo, true, "message");
  488. info!(target: "foo_events", foo, true, "message");
  489. }
  490. #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
  491. #[test]
  492. fn warn() {
  493. warn!(foo = ?3, bar.baz = %2, quux = false);
  494. warn!(foo = 3, bar.baz = 2, quux = false);
  495. warn!(foo = 3, bar.baz = 3,);
  496. warn!("foo");
  497. warn!("foo: {}", 3);
  498. warn!(foo = ?3, bar.baz = %2, quux = false, "hello world {:?}", 42);
  499. warn!(foo = 3, bar.baz = 2, quux = false, "hello world {:?}", 42);
  500. warn!(foo = 3, bar.baz = 3, "hello world {:?}", 42,);
  501. warn!({ foo = 3, bar.baz = 80 }, "quux");
  502. warn!({ foo = 2, bar.baz = 79 }, "quux {:?}", true);
  503. warn!({ foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
  504. warn!({ foo = 2, bar.baz = 78 }, "quux");
  505. warn!({ foo = ?2, bar.baz = %78 }, "quux");
  506. warn!(target: "foo_events", foo = 3, bar.baz = 2, quux = false);
  507. warn!(target: "foo_events", foo = 3, bar.baz = 3,);
  508. warn!(target: "foo_events", "foo");
  509. warn!(target: "foo_events", "foo: {}", 3);
  510. warn!(target: "foo_events", { foo = 3, bar.baz = 80 }, "quux");
  511. warn!(target: "foo_events", { foo = 2, bar.baz = 79 }, "quux {:?}", true);
  512. warn!(target: "foo_events", { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
  513. warn!(target: "foo_events", { foo = 2, bar.baz = 78, }, "quux");
  514. let foo = 1;
  515. warn!(?foo);
  516. warn!(%foo);
  517. warn!(foo);
  518. warn!(target: "foo_events", ?foo);
  519. warn!(target: "foo_events", %foo);
  520. warn!(target: "foo_events", foo);
  521. warn!(target: "foo_events", ?foo, true, "message");
  522. warn!(target: "foo_events", %foo, true, "message");
  523. warn!(target: "foo_events", foo, true, "message");
  524. }
  525. #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
  526. #[test]
  527. fn error() {
  528. error!(foo = ?3, bar.baz = %2, quux = false);
  529. error!(foo = 3, bar.baz = 2, quux = false);
  530. error!(foo = 3, bar.baz = 3,);
  531. error!("foo");
  532. error!("foo: {}", 3);
  533. error!(foo = ?3, bar.baz = %2, quux = false, "hello world {:?}", 42);
  534. error!(foo = 3, bar.baz = 2, quux = false, "hello world {:?}", 42);
  535. error!(foo = 3, bar.baz = 3, "hello world {:?}", 42,);
  536. error!({ foo = 3, bar.baz = 80 }, "quux");
  537. error!({ foo = 2, bar.baz = 79 }, "quux {:?}", true);
  538. error!({ foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
  539. error!({ foo = 2, bar.baz = 78, }, "quux");
  540. error!({ foo = ?2, bar.baz = %78 }, "quux");
  541. error!(target: "foo_events", foo = 3, bar.baz = 2, quux = false);
  542. error!(target: "foo_events", foo = 3, bar.baz = 3,);
  543. error!(target: "foo_events", "foo");
  544. error!(target: "foo_events", "foo: {}", 3);
  545. error!(target: "foo_events", { foo = 3, bar.baz = 80 }, "quux");
  546. error!(target: "foo_events", { foo = 2, bar.baz = 79 }, "quux {:?}", true);
  547. error!(target: "foo_events", { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
  548. error!(target: "foo_events", { foo = 2, bar.baz = 78, }, "quux");
  549. let foo = 1;
  550. error!(?foo);
  551. error!(%foo);
  552. error!(foo);
  553. error!(target: "foo_events", ?foo);
  554. error!(target: "foo_events", %foo);
  555. error!(target: "foo_events", foo);
  556. error!(target: "foo_events", ?foo, true, "message");
  557. error!(target: "foo_events", %foo, true, "message");
  558. error!(target: "foo_events", foo, true, "message");
  559. }
  560. #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
  561. #[test]
  562. fn event_root() {
  563. event!(parent: None, Level::DEBUG, foo = ?3, bar.baz = %2, quux = false);
  564. event!(
  565. parent: None,
  566. Level::DEBUG,
  567. foo = 3,
  568. bar.baz = 2,
  569. quux = false
  570. );
  571. event!(parent: None, Level::DEBUG, foo = 3, bar.baz = 3,);
  572. event!(parent: None, Level::DEBUG, "foo");
  573. event!(parent: None, Level::DEBUG, "foo: {}", 3);
  574. event!(parent: None, Level::DEBUG, { foo = 3, bar.baz = 80 }, "quux");
  575. event!(parent: None, Level::DEBUG, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
  576. event!(parent: None, Level::DEBUG, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
  577. event!(parent: None, Level::DEBUG, { foo = ?2, bar.baz = %78 }, "quux");
  578. event!(target: "foo_events", parent: None, Level::DEBUG, foo = 3, bar.baz = 2, quux = false);
  579. event!(target: "foo_events", parent: None, Level::DEBUG, foo = 3, bar.baz = 3,);
  580. event!(target: "foo_events", parent: None, Level::DEBUG, "foo");
  581. event!(target: "foo_events", parent: None, Level::DEBUG, "foo: {}", 3);
  582. event!(target: "foo_events", parent: None, Level::DEBUG, { foo = 3, bar.baz = 80 }, "quux");
  583. event!(target: "foo_events", parent: None, Level::DEBUG, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
  584. event!(target: "foo_events", parent: None, Level::DEBUG, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
  585. event!(target: "foo_events", parent: None, Level::DEBUG, { foo = 2, bar.baz = 78, }, "quux");
  586. }
  587. #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
  588. #[test]
  589. fn trace_root() {
  590. trace!(parent: None, foo = ?3, bar.baz = %2, quux = false);
  591. trace!(parent: None, foo = 3, bar.baz = 2, quux = false);
  592. trace!(parent: None, foo = 3, bar.baz = 3,);
  593. trace!(parent: None, "foo");
  594. trace!(parent: None, "foo: {}", 3);
  595. trace!(parent: None, { foo = 3, bar.baz = 80 }, "quux");
  596. trace!(parent: None, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
  597. trace!(parent: None, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
  598. trace!(parent: None, { foo = 2, bar.baz = 78 }, "quux");
  599. trace!(parent: None, { foo = ?2, bar.baz = %78 }, "quux");
  600. trace!(target: "foo_events", parent: None, foo = 3, bar.baz = 2, quux = false);
  601. trace!(target: "foo_events", parent: None, foo = 3, bar.baz = 3,);
  602. trace!(target: "foo_events", parent: None, "foo");
  603. trace!(target: "foo_events", parent: None, "foo: {}", 3);
  604. trace!(target: "foo_events", parent: None, { foo = 3, bar.baz = 80 }, "quux");
  605. trace!(target: "foo_events", parent: None, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
  606. trace!(target: "foo_events", parent: None, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
  607. trace!(target: "foo_events", parent: None, { foo = 2, bar.baz = 78, }, "quux");
  608. }
  609. #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
  610. #[test]
  611. fn debug_root() {
  612. debug!(parent: None, foo = ?3, bar.baz = %2, quux = false);
  613. debug!(parent: None, foo = 3, bar.baz = 2, quux = false);
  614. debug!(parent: None, foo = 3, bar.baz = 3,);
  615. debug!(parent: None, "foo");
  616. debug!(parent: None, "foo: {}", 3);
  617. debug!(parent: None, { foo = 3, bar.baz = 80 }, "quux");
  618. debug!(parent: None, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
  619. debug!(parent: None, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
  620. debug!(parent: None, { foo = 2, bar.baz = 78 }, "quux");
  621. debug!(parent: None, { foo = ?2, bar.baz = %78 }, "quux");
  622. debug!(target: "foo_events", parent: None, foo = 3, bar.baz = 2, quux = false);
  623. debug!(target: "foo_events", parent: None, foo = 3, bar.baz = 3,);
  624. debug!(target: "foo_events", parent: None, "foo");
  625. debug!(target: "foo_events", parent: None, "foo: {}", 3);
  626. debug!(target: "foo_events", parent: None, { foo = 3, bar.baz = 80 }, "quux");
  627. debug!(target: "foo_events", parent: None, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
  628. debug!(target: "foo_events", parent: None, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
  629. debug!(target: "foo_events", parent: None, { foo = 2, bar.baz = 78, }, "quux");
  630. }
  631. #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
  632. #[test]
  633. fn info_root() {
  634. info!(parent: None, foo = ?3, bar.baz = %2, quux = false);
  635. info!(parent: None, foo = 3, bar.baz = 2, quux = false);
  636. info!(parent: None, foo = 3, bar.baz = 3,);
  637. info!(parent: None, "foo");
  638. info!(parent: None, "foo: {}", 3);
  639. info!(parent: None, { foo = 3, bar.baz = 80 }, "quux");
  640. info!(parent: None, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
  641. info!(parent: None, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
  642. info!(parent: None, { foo = 2, bar.baz = 78 }, "quux");
  643. info!(parent: None, { foo = ?2, bar.baz = %78 }, "quux");
  644. info!(target: "foo_events", parent: None, foo = 3, bar.baz = 2, quux = false);
  645. info!(target: "foo_events", parent: None, foo = 3, bar.baz = 3,);
  646. info!(target: "foo_events", parent: None, "foo");
  647. info!(target: "foo_events", parent: None, "foo: {}", 3);
  648. info!(target: "foo_events", parent: None, { foo = 3, bar.baz = 80 }, "quux");
  649. info!(target: "foo_events", parent: None, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
  650. info!(target: "foo_events", parent: None, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
  651. info!(target: "foo_events", parent: None, { foo = 2, bar.baz = 78, }, "quux");
  652. }
  653. #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
  654. #[test]
  655. fn warn_root() {
  656. warn!(parent: None, foo = ?3, bar.baz = %2, quux = false);
  657. warn!(parent: None, foo = 3, bar.baz = 2, quux = false);
  658. warn!(parent: None, foo = 3, bar.baz = 3,);
  659. warn!(parent: None, "foo");
  660. warn!(parent: None, "foo: {}", 3);
  661. warn!(parent: None, { foo = 3, bar.baz = 80 }, "quux");
  662. warn!(parent: None, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
  663. warn!(parent: None, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
  664. warn!(parent: None, { foo = 2, bar.baz = 78 }, "quux");
  665. warn!(parent: None, { foo = ?2, bar.baz = %78 }, "quux");
  666. warn!(target: "foo_events", parent: None, foo = 3, bar.baz = 2, quux = false);
  667. warn!(target: "foo_events", parent: None, foo = 3, bar.baz = 3,);
  668. warn!(target: "foo_events", parent: None, "foo");
  669. warn!(target: "foo_events", parent: None, "foo: {}", 3);
  670. warn!(target: "foo_events", parent: None, { foo = 3, bar.baz = 80 }, "quux");
  671. warn!(target: "foo_events", parent: None, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
  672. warn!(target: "foo_events", parent: None, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
  673. warn!(target: "foo_events", parent: None, { foo = 2, bar.baz = 78, }, "quux");
  674. }
  675. #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
  676. #[test]
  677. fn error_root() {
  678. error!(parent: None, foo = ?3, bar.baz = %2, quux = false);
  679. error!(parent: None, foo = 3, bar.baz = 2, quux = false);
  680. error!(parent: None, foo = 3, bar.baz = 3,);
  681. error!(parent: None, "foo");
  682. error!(parent: None, "foo: {}", 3);
  683. error!(parent: None, { foo = 3, bar.baz = 80 }, "quux");
  684. error!(parent: None, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
  685. error!(parent: None, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
  686. error!(parent: None, { foo = 2, bar.baz = 78 }, "quux");
  687. error!(parent: None, { foo = ?2, bar.baz = %78 }, "quux");
  688. error!(target: "foo_events", parent: None, foo = 3, bar.baz = 2, quux = false);
  689. error!(target: "foo_events", parent: None, foo = 3, bar.baz = 3,);
  690. error!(target: "foo_events", parent: None, "foo");
  691. error!(target: "foo_events", parent: None, "foo: {}", 3);
  692. error!(target: "foo_events", parent: None, { foo = 3, bar.baz = 80 }, "quux");
  693. error!(target: "foo_events", parent: None, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
  694. error!(target: "foo_events", parent: None, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
  695. error!(target: "foo_events", parent: None, { foo = 2, bar.baz = 78, }, "quux");
  696. }
  697. #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
  698. #[test]
  699. fn event_with_parent() {
  700. let p = span!(Level::TRACE, "im_a_parent!");
  701. event!(parent: &p, Level::DEBUG, foo = ?3, bar.baz = %2, quux = false);
  702. event!(parent: &p, Level::DEBUG, foo = 3, bar.baz = 2, quux = false);
  703. event!(parent: &p, Level::DEBUG, foo = 3, bar.baz = 3,);
  704. event!(parent: &p, Level::DEBUG, "foo");
  705. event!(parent: &p, Level::DEBUG, "foo: {}", 3);
  706. event!(parent: &p, Level::DEBUG, { foo = 3, bar.baz = 80 }, "quux");
  707. event!(parent: &p, Level::DEBUG, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
  708. event!(parent: &p, Level::DEBUG, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
  709. event!(parent: &p, Level::DEBUG, { foo = ?2, bar.baz = %78 }, "quux");
  710. event!(target: "foo_events", parent: &p, Level::DEBUG, foo = 3, bar.baz = 2, quux = false);
  711. event!(target: "foo_events", parent: &p, Level::DEBUG, foo = 3, bar.baz = 3,);
  712. event!(target: "foo_events", parent: &p, Level::DEBUG, "foo");
  713. event!(target: "foo_events", parent: &p, Level::DEBUG, "foo: {}", 3);
  714. event!(target: "foo_events", parent: &p, Level::DEBUG, { foo = 3, bar.baz = 80 }, "quux");
  715. event!(target: "foo_events", parent: &p, Level::DEBUG, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
  716. event!(target: "foo_events", parent: &p, Level::DEBUG, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
  717. event!(target: "foo_events", parent: &p, Level::DEBUG, { foo = 2, bar.baz = 78, }, "quux");
  718. }
  719. #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
  720. #[test]
  721. fn trace_with_parent() {
  722. let p = span!(Level::TRACE, "im_a_parent!");
  723. trace!(parent: &p, foo = ?3, bar.baz = %2, quux = false);
  724. trace!(parent: &p, foo = 3, bar.baz = 2, quux = false);
  725. trace!(parent: &p, foo = 3, bar.baz = 3,);
  726. trace!(parent: &p, "foo");
  727. trace!(parent: &p, "foo: {}", 3);
  728. trace!(parent: &p, { foo = 3, bar.baz = 80 }, "quux");
  729. trace!(parent: &p, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
  730. trace!(parent: &p, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
  731. trace!(parent: &p, { foo = 2, bar.baz = 78 }, "quux");
  732. trace!(parent: &p, { foo = ?2, bar.baz = %78 }, "quux");
  733. trace!(target: "foo_events", parent: &p, foo = 3, bar.baz = 2, quux = false);
  734. trace!(target: "foo_events", parent: &p, foo = 3, bar.baz = 3,);
  735. trace!(target: "foo_events", parent: &p, "foo");
  736. trace!(target: "foo_events", parent: &p, "foo: {}", 3);
  737. trace!(target: "foo_events", parent: &p, { foo = 3, bar.baz = 80 }, "quux");
  738. trace!(target: "foo_events", parent: &p, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
  739. trace!(target: "foo_events", parent: &p, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
  740. trace!(target: "foo_events", parent: &p, { foo = 2, bar.baz = 78, }, "quux");
  741. }
  742. #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
  743. #[test]
  744. fn debug_with_parent() {
  745. let p = span!(Level::TRACE, "im_a_parent!");
  746. debug!(parent: &p, foo = ?3, bar.baz = %2, quux = false);
  747. debug!(parent: &p, foo = 3, bar.baz = 2, quux = false);
  748. debug!(parent: &p, foo = 3, bar.baz = 3,);
  749. debug!(parent: &p, "foo");
  750. debug!(parent: &p, "foo: {}", 3);
  751. debug!(parent: &p, { foo = 3, bar.baz = 80 }, "quux");
  752. debug!(parent: &p, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
  753. debug!(parent: &p, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
  754. debug!(parent: &p, { foo = 2, bar.baz = 78 }, "quux");
  755. debug!(parent: &p, { foo = ?2, bar.baz = %78 }, "quux");
  756. debug!(target: "foo_events", parent: &p, foo = 3, bar.baz = 2, quux = false);
  757. debug!(target: "foo_events", parent: &p, foo = 3, bar.baz = 3,);
  758. debug!(target: "foo_events", parent: &p, "foo");
  759. debug!(target: "foo_events", parent: &p, "foo: {}", 3);
  760. debug!(target: "foo_events", parent: &p, { foo = 3, bar.baz = 80 }, "quux");
  761. debug!(target: "foo_events", parent: &p, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
  762. debug!(target: "foo_events", parent: &p, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
  763. debug!(target: "foo_events", parent: &p, { foo = 2, bar.baz = 78, }, "quux");
  764. }
  765. #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
  766. #[test]
  767. fn info_with_parent() {
  768. let p = span!(Level::TRACE, "im_a_parent!");
  769. info!(parent: &p, foo = ?3, bar.baz = %2, quux = false);
  770. info!(parent: &p, foo = 3, bar.baz = 2, quux = false);
  771. info!(parent: &p, foo = 3, bar.baz = 3,);
  772. info!(parent: &p, "foo");
  773. info!(parent: &p, "foo: {}", 3);
  774. info!(parent: &p, { foo = 3, bar.baz = 80 }, "quux");
  775. info!(parent: &p, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
  776. info!(parent: &p, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
  777. info!(parent: &p, { foo = 2, bar.baz = 78 }, "quux");
  778. info!(parent: &p, { foo = ?2, bar.baz = %78 }, "quux");
  779. info!(target: "foo_events", parent: &p, foo = 3, bar.baz = 2, quux = false);
  780. info!(target: "foo_events", parent: &p, foo = 3, bar.baz = 3,);
  781. info!(target: "foo_events", parent: &p, "foo");
  782. info!(target: "foo_events", parent: &p, "foo: {}", 3);
  783. info!(target: "foo_events", parent: &p, { foo = 3, bar.baz = 80 }, "quux");
  784. info!(target: "foo_events", parent: &p, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
  785. info!(target: "foo_events", parent: &p, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
  786. info!(target: "foo_events", parent: &p, { foo = 2, bar.baz = 78, }, "quux");
  787. }
  788. #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
  789. #[test]
  790. fn warn_with_parent() {
  791. let p = span!(Level::TRACE, "im_a_parent!");
  792. warn!(parent: &p, foo = ?3, bar.baz = %2, quux = false);
  793. warn!(parent: &p, foo = 3, bar.baz = 2, quux = false);
  794. warn!(parent: &p, foo = 3, bar.baz = 3,);
  795. warn!(parent: &p, "foo");
  796. warn!(parent: &p, "foo: {}", 3);
  797. warn!(parent: &p, { foo = 3, bar.baz = 80 }, "quux");
  798. warn!(parent: &p, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
  799. warn!(parent: &p, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
  800. warn!(parent: &p, { foo = 2, bar.baz = 78 }, "quux");
  801. warn!(parent: &p, { foo = ?2, bar.baz = %78 }, "quux");
  802. warn!(target: "foo_events", parent: &p, foo = 3, bar.baz = 2, quux = false);
  803. warn!(target: "foo_events", parent: &p, foo = 3, bar.baz = 3,);
  804. warn!(target: "foo_events", parent: &p, "foo");
  805. warn!(target: "foo_events", parent: &p, "foo: {}", 3);
  806. warn!(target: "foo_events", parent: &p, { foo = 3, bar.baz = 80 }, "quux");
  807. warn!(target: "foo_events", parent: &p, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
  808. warn!(target: "foo_events", parent: &p, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
  809. warn!(target: "foo_events", parent: &p, { foo = 2, bar.baz = 78, }, "quux");
  810. }
  811. #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
  812. #[test]
  813. fn error_with_parent() {
  814. let p = span!(Level::TRACE, "im_a_parent!");
  815. error!(parent: &p, foo = ?3, bar.baz = %2, quux = false);
  816. error!(parent: &p, foo = 3, bar.baz = 2, quux = false);
  817. error!(parent: &p, foo = 3, bar.baz = 3,);
  818. error!(parent: &p, "foo");
  819. error!(parent: &p, "foo: {}", 3);
  820. error!(parent: &p, { foo = 3, bar.baz = 80 }, "quux");
  821. error!(parent: &p, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
  822. error!(parent: &p, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
  823. error!(parent: &p, { foo = 2, bar.baz = 78 }, "quux");
  824. error!(parent: &p, { foo = ?2, bar.baz = %78 }, "quux");
  825. error!(target: "foo_events", parent: &p, foo = 3, bar.baz = 2, quux = false);
  826. error!(target: "foo_events", parent: &p, foo = 3, bar.baz = 3,);
  827. error!(target: "foo_events", parent: &p, "foo");
  828. error!(target: "foo_events", parent: &p, "foo: {}", 3);
  829. error!(target: "foo_events", parent: &p, { foo = 3, bar.baz = 80 }, "quux");
  830. error!(target: "foo_events", parent: &p, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
  831. error!(target: "foo_events", parent: &p, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
  832. error!(target: "foo_events", parent: &p, { foo = 2, bar.baz = 78, }, "quux");
  833. }
  834. #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
  835. #[test]
  836. fn field_shorthand_only() {
  837. #[derive(Debug)]
  838. struct Position {
  839. x: f32,
  840. y: f32,
  841. }
  842. let pos = Position {
  843. x: 3.234,
  844. y: -1.223,
  845. };
  846. trace!(?pos.x, ?pos.y);
  847. debug!(?pos.x, ?pos.y);
  848. info!(?pos.x, ?pos.y);
  849. warn!(?pos.x, ?pos.y);
  850. error!(?pos.x, ?pos.y);
  851. event!(Level::TRACE, ?pos.x, ?pos.y);
  852. }
  853. #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
  854. #[test]
  855. fn borrow_val_events() {
  856. // Reproduces https://github.com/tokio-rs/tracing/issues/954
  857. let mut foo = (String::new(), String::new());
  858. let zero = &mut foo.0;
  859. trace!(one = ?foo.1);
  860. debug!(one = ?foo.1);
  861. info!(one = ?foo.1);
  862. warn!(one = ?foo.1);
  863. error!(one = ?foo.1);
  864. zero.push_str("hello world");
  865. }
  866. #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
  867. #[test]
  868. fn borrow_val_spans() {
  869. // Reproduces https://github.com/tokio-rs/tracing/issues/954
  870. let mut foo = (String::new(), String::new());
  871. let zero = &mut foo.0;
  872. let _span = trace_span!("span", one = ?foo.1);
  873. let _span = debug_span!("span", one = ?foo.1);
  874. let _span = info_span!("span", one = ?foo.1);
  875. let _span = warn_span!("span", one = ?foo.1);
  876. let _span = error_span!("span", one = ?foo.1);
  877. zero.push_str("hello world");
  878. }
  879. #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
  880. #[test]
  881. fn callsite_macro_api() {
  882. // This test should catch any inadvertent breaking changes
  883. // caused by changes to the macro.
  884. let _callsite = callsite! {
  885. name: "test callsite",
  886. kind: tracing::metadata::Kind::EVENT,
  887. target: "test target",
  888. level: tracing::Level::TRACE,
  889. fields: foo, bar,
  890. };
  891. let _callsite = callsite! {
  892. name: "test callsite",
  893. kind: tracing::metadata::Kind::SPAN,
  894. level: tracing::Level::TRACE,
  895. fields: foo,
  896. };
  897. let _callsite = callsite! {
  898. name: "test callsite",
  899. kind: tracing::metadata::Kind::SPAN,
  900. fields: foo,
  901. };
  902. }