move once from bevy_log to bevy_utils, to allow for it's use in bevy_ecs (#11419)

# Objective

When working within `bevy_ecs`, we can't use the `log_once` macros due
to their placement in `bevy_log` - which depends on `bevy_ecs`. All this
create does is migrate those macros to the `bevy_utils` crate, while
still re-exporting them in `bevy_log`.

created to resolve this:
https://github.com/bevyengine/bevy/pull/11417#discussion_r1458100211

---------

Co-authored-by: François <mockersf@gmail.com>
This commit is contained in:
Lee-Orr 2024-01-19 01:07:41 -05:00 committed by GitHub
parent 6fbd585d78
commit e9b8c71da0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 20 additions and 16 deletions

View File

@ -11,8 +11,6 @@
//! For more fine-tuned control over logging behavior, set up the [`LogPlugin`] or //! For more fine-tuned control over logging behavior, set up the [`LogPlugin`] or
//! `DefaultPlugins` during app initialization. //! `DefaultPlugins` during app initialization.
mod once;
#[cfg(feature = "trace")] #[cfg(feature = "trace")]
use std::panic; use std::panic;
@ -31,12 +29,17 @@ pub mod prelude {
debug, debug_span, error, error_span, info, info_span, trace, trace_span, warn, warn_span, debug, debug_span, error, error_span, info, info_span, trace, trace_span, warn, warn_span,
}; };
pub use crate::{debug_once, error_once, info_once, trace_once, warn_once}; #[doc(hidden)]
pub use bevy_utils::{debug_once, error_once, info_once, once, trace_once, warn_once};
} }
pub use bevy_utils::tracing::{ pub use bevy_utils::{
debug, debug_span, error, error_span, info, info_span, trace, trace_span, warn, warn_span, debug_once, error_once, info_once, once, trace_once,
Level, tracing::{
debug, debug_span, error, error_span, info, info_span, trace, trace_span, warn, warn_span,
Level,
},
warn_once,
}; };
pub use tracing_subscriber; pub use tracing_subscriber;

View File

@ -23,6 +23,7 @@ mod cow_arc;
mod default; mod default;
mod float_ord; mod float_ord;
pub mod intern; pub mod intern;
mod once;
pub use crate::uuid::Uuid; pub use crate::uuid::Uuid;
pub use ahash::{AHasher, RandomState}; pub use ahash::{AHasher, RandomState};

View File

@ -11,52 +11,52 @@ macro_rules! once {
}}; }};
} }
/// Call [`trace!`](crate::trace) once per call site. /// Call [`trace!`](crate::tracing::trace) once per call site.
/// ///
/// Useful for logging within systems which are called every frame. /// Useful for logging within systems which are called every frame.
#[macro_export] #[macro_export]
macro_rules! trace_once { macro_rules! trace_once {
($($arg:tt)+) => ({ ($($arg:tt)+) => ({
$crate::once!($crate::trace!($($arg)+)) $crate::once!($crate::tracing::trace!($($arg)+))
}); });
} }
/// Call [`debug!`](crate::debug) once per call site. /// Call [`debug!`](crate::tracing::debug) once per call site.
/// ///
/// Useful for logging within systems which are called every frame. /// Useful for logging within systems which are called every frame.
#[macro_export] #[macro_export]
macro_rules! debug_once { macro_rules! debug_once {
($($arg:tt)+) => ({ ($($arg:tt)+) => ({
$crate::once!($crate::debug!($($arg)+)) $crate::once!($crate::tracing::debug!($($arg)+))
}); });
} }
/// Call [`info!`](crate::info) once per call site. /// Call [`info!`](crate::tracing::info) once per call site.
/// ///
/// Useful for logging within systems which are called every frame. /// Useful for logging within systems which are called every frame.
#[macro_export] #[macro_export]
macro_rules! info_once { macro_rules! info_once {
($($arg:tt)+) => ({ ($($arg:tt)+) => ({
$crate::once!($crate::info!($($arg)+)) $crate::once!($crate::tracing::info!($($arg)+))
}); });
} }
/// Call [`warn!`](crate::warn) once per call site. /// Call [`warn!`](crate::tracing::warn) once per call site.
/// ///
/// Useful for logging within systems which are called every frame. /// Useful for logging within systems which are called every frame.
#[macro_export] #[macro_export]
macro_rules! warn_once { macro_rules! warn_once {
($($arg:tt)+) => ({ ($($arg:tt)+) => ({
$crate::once!($crate::warn!($($arg)+)) $crate::once!($crate::tracing::warn!($($arg)+))
}); });
} }
/// Call [`error!`](crate::error) once per call site. /// Call [`error!`](crate::tracing::error) once per call site.
/// ///
/// Useful for logging within systems which are called every frame. /// Useful for logging within systems which are called every frame.
#[macro_export] #[macro_export]
macro_rules! error_once { macro_rules! error_once {
($($arg:tt)+) => ({ ($($arg:tt)+) => ({
$crate::once!($crate::error!($($arg)+)) $crate::once!($crate::tracing::error!($($arg)+))
}); });
} }