nonblocking_logger/
macros.rs1#[macro_export]
44macro_rules! log {
45 ($($arg:tt)+) => {
46 { let _ = $crate::log(&format!($($arg)+)); }
47 };
48}
49
50#[macro_export]
66macro_rules! log_with {
67 ($logger:expr, $($arg:tt)+) => {
68 { let _ = $logger.log(&format!($($arg)+)); }
69 };
70}
71
72#[macro_export]
91macro_rules! error {
92 ($($arg:tt)+) => {
93 { let _ = $crate::error(&format!($($arg)+)); }
94 };
95}
96
97#[macro_export]
99macro_rules! error_with {
100 ($logger:expr, $($arg:tt)+) => {
101 { let _ = $logger.error(&format!($($arg)+)); }
102 };
103}
104
105#[macro_export]
124macro_rules! warning {
125 ($($arg:tt)+) => {
126 { let _ = $crate::warning(&format!($($arg)+)); }
127 };
128}
129
130#[macro_export]
132macro_rules! warning_with {
133 ($logger:expr, $($arg:tt)+) => {
134 { let _ = $logger.warning(&format!($($arg)+)); }
135 };
136}
137
138#[macro_export]
157macro_rules! info {
158 ($($arg:tt)+) => {
159 { let _ = $crate::info(&format!($($arg)+)); }
160 };
161}
162
163#[macro_export]
165macro_rules! info_with {
166 ($logger:expr, $($arg:tt)+) => {
167 { let _ = $logger.info(&format!($($arg)+)); }
168 };
169}
170
171#[macro_export]
190macro_rules! debug {
191 ($($arg:tt)+) => {
192 { let _ = $crate::debug(&format!($($arg)+)); }
193 };
194}
195
196#[macro_export]
198macro_rules! debug_with {
199 ($logger:expr, $($arg:tt)+) => {
200 { let _ = $logger.debug(&format!($($arg)+)); }
201 };
202}
203
204#[macro_export]
223macro_rules! trace {
224 ($($arg:tt)+) => {
225 { let _ = $crate::trace(&format!($($arg)+)); }
226 };
227}
228
229#[macro_export]
231macro_rules! trace_with {
232 ($logger:expr, $($arg:tt)+) => {
233 { let _ = $logger.trace(&format!($($arg)+)); }
234 };
235}
236
237#[macro_export]
263macro_rules! log_lazy {
264 (|| $($arg:tt)+) => {
265 { let _ = $crate::log_lazy(|| format!($($arg)+)); }
266 };
267}
268
269#[macro_export]
271macro_rules! log_lazy_with {
272 ($logger:expr, || $($arg:tt)+) => {
273 { let _ = $logger.log_lazy(|| format!($($arg)+)); }
274 };
275}
276
277#[macro_export]
279macro_rules! error_lazy {
280 (|| $($arg:tt)+) => {
281 { let _ = $crate::error_lazy(|| format!($($arg)+)); }
282 };
283}
284
285#[macro_export]
287macro_rules! error_lazy_with {
288 ($logger:expr, || $($arg:tt)+) => {
289 { let _ = $logger.error_lazy(|| format!($($arg)+)); }
290 };
291}
292
293#[macro_export]
295macro_rules! warning_lazy {
296 (|| $($arg:tt)+) => {
297 { let _ = $crate::warning_lazy(|| format!($($arg)+)); }
298 };
299}
300
301#[macro_export]
303macro_rules! warning_lazy_with {
304 ($logger:expr, || $($arg:tt)+) => {
305 { let _ = $logger.warning_lazy(|| format!($($arg)+)); }
306 };
307}
308
309#[macro_export]
311macro_rules! info_lazy {
312 (|| $($arg:tt)+) => {
313 { let _ = $crate::info_lazy(|| format!($($arg)+)); }
314 };
315}
316
317#[macro_export]
319macro_rules! info_lazy_with {
320 ($logger:expr, || $($arg:tt)+) => {
321 { let _ = $logger.info_lazy(|| format!($($arg)+)); }
322 };
323}
324
325#[macro_export]
327macro_rules! debug_lazy {
328 (|| $($arg:tt)+) => {
329 { let _ = $crate::debug_lazy(|| format!($($arg)+)); }
330 };
331}
332
333#[macro_export]
335macro_rules! debug_lazy_with {
336 ($logger:expr, || $($arg:tt)+) => {
337 { let _ = $logger.debug_lazy(|| format!($($arg)+)); }
338 };
339}
340
341#[macro_export]
343macro_rules! trace_lazy {
344 (|| $($arg:tt)+) => {
345 { let _ = $crate::trace_lazy(|| format!($($arg)+)); }
346 };
347}
348
349#[macro_export]
351macro_rules! trace_lazy_with {
352 ($logger:expr, || $($arg:tt)+) => {
353 { let _ = $logger.trace_lazy(|| format!($($arg)+)); }
354 };
355}
356
357#[cfg(test)]
358#[cfg(not(target_arch = "wasm32"))]
359mod tests {
360
361 #[test]
362 fn test_log_macro() {
363 let count = 5;
364 log!("Processing {} items", count);
365 }
366
367 #[test]
368 fn test_error_macro() {
369 let error_code = 500;
370 error!("Server error: {}", error_code);
371 }
372
373 #[test]
374 fn test_warning_macro() {
375 let threshold = 80;
376 warning!("CPU usage is {}%", threshold);
377 }
378
379 #[test]
380 fn test_info_macro() {
381 let user = "alice";
382 info!("User {} connected", user);
383 }
384
385 #[test]
386 fn test_debug_macro() {
387 let data = vec![1, 2, 3];
388 debug!("Processing data: {:?}", data);
389 }
390
391 #[test]
392 fn test_trace_macro() {
393 let step = "validation";
394 trace!("Entering {} step", step);
395 }
396
397 #[test]
398 fn test_log_lazy_macro() {
399 let user_id = 42;
400 log_lazy!(|| "User {}: {}", user_id, "result");
401 }
402
403 #[test]
404 fn test_error_lazy_macro() {
405 let error_code = 500;
406 error_lazy!(|| "Server error: {}", error_code);
407 }
408
409 #[test]
410 fn test_warning_lazy_macro() {
411 let threshold = 80;
412 warning_lazy!(|| "CPU usage is {}%", threshold);
413 }
414
415 #[test]
416 fn test_info_lazy_macro() {
417 let user = "alice";
418 info_lazy!(|| "User {} connected", user);
419 }
420
421 #[test]
422 fn test_debug_lazy_macro() {
423 let data = vec![1, 2, 3];
424 debug_lazy!(|| "Processing data: {:?}", data);
425 }
426
427 #[test]
428 fn test_trace_lazy_macro() {
429 let step = "validation";
430 trace_lazy!(|| "Entering {} step", step);
431 }
432
433 #[test]
434 fn test_macro_with_multiple_args() {
435 let user_id = 42;
436 let action = "login";
437 let timestamp = "2025-01-14 10:30:00";
438
439 info!("User {} performed {} at {}", user_id, action, timestamp);
440 }
441
442 #[test]
443 fn test_macro_with_debug_formatting() {
444 let data = vec![1, 2, 3, 4, 5];
445 let metadata = std::collections::HashMap::from([("key1", "value1"), ("key2", "value2")]);
446
447 debug!("Data: {:?}, Metadata: {:?}", data, metadata);
448 }
449
450 #[test]
451 fn test_macro_with_no_args() {
452 info!("Simple message without formatting");
453 }
454
455 #[test]
456 fn test_log_macro_with_logger() {
457 use crate::Logger;
458 let logger = Logger::new().stdout();
459 let count = 5;
460 log_with!(
461 logger,
462 "Processing {} items with custom logger",
463 count
464 );
465 }
466
467 #[test]
468 fn test_error_macro_with_logger() {
469 use crate::Logger;
470 let logger = Logger::new().stdout();
471 let error_code = 500;
472 error_with!(logger, "Server error with custom logger: {}", error_code);
473 }
474
475 #[test]
476 fn test_warning_macro_with_logger() {
477 use crate::Logger;
478 let logger = Logger::new().stdout();
479 let threshold = 80;
480 warning_with!(logger, "CPU usage with custom logger is {}%", threshold);
481 }
482
483 #[test]
484 fn test_info_macro_with_logger() {
485 use crate::Logger;
486 let logger = Logger::new().stdout();
487 let user = "alice";
488 info_with!(logger, "User {} connected with custom logger", user);
489 }
490
491 #[test]
492 fn test_debug_macro_with_logger() {
493 use crate::Logger;
494 let logger = Logger::new().stdout();
495 let data = vec![1, 2, 3];
496 debug_with!(logger, "Processing data with custom logger: {:?}", data);
497 }
498
499 #[test]
500 fn test_trace_macro_with_logger() {
501 use crate::Logger;
502 let logger = Logger::new().stdout();
503 let step = "validation";
504 trace_with!(logger, "Entering {} step with custom logger", step);
505 }
506
507 #[test]
508 fn test_log_lazy_macro_with_logger() {
509 use crate::Logger;
510 let logger = Logger::new().stdout();
511 let user_id = 42;
512 log_lazy_with!(
513 logger,
514 || "User {} with custom logger: {}",
515 user_id,
516 "result"
517 );
518 }
519
520 #[test]
521 fn test_error_lazy_macro_with_logger() {
522 use crate::Logger;
523 let logger = Logger::new().stdout();
524 let error_code = 500;
525 error_lazy_with!(logger, || "Server error with custom logger: {}", error_code);
526 }
527
528 #[test]
529 fn test_warning_lazy_macro_with_logger() {
530 use crate::Logger;
531 let logger = Logger::new().stdout();
532 let threshold = 80;
533 warning_lazy_with!(logger, || "CPU usage with custom logger is {}%", threshold);
534 }
535
536 #[test]
537 fn test_info_lazy_macro_with_logger() {
538 use crate::Logger;
539 let logger = Logger::new().stdout();
540 let user = "alice";
541 info_lazy_with!(logger, || "User {} connected with custom logger", user);
542 }
543
544 #[test]
545 fn test_debug_lazy_macro_with_logger() {
546 use crate::Logger;
547 let logger = Logger::new().stdout();
548 let data = vec![1, 2, 3];
549 debug_lazy_with!(logger, || "Processing data with custom logger: {:?}", data);
550 }
551
552 #[test]
553 fn test_trace_lazy_macro_with_logger() {
554 use crate::Logger;
555 let logger = Logger::new().stdout();
556 let step = "validation";
557 trace_lazy_with!(logger, || "Entering {} step with custom logger", step);
558 }
559
560 #[test]
561 fn test_macro_backward_compatibility() {
562 let count = 5;
563 log!(
564 "Backward compatibility test: {} items",
565 count
566 );
567 error!("Backward compatibility error test: {}", 500);
568 warning!("Backward compatibility warning test: {}%", 80);
569 info!("Backward compatibility info test: {}", "alice");
570 debug!("Backward compatibility debug test: {:?}", vec![1, 2, 3]);
571 trace!("Backward compatibility trace test: {}", "validation");
572 }
573}