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
//! `DefaultPlugins` during app initialization.
mod once;
#[cfg(feature = "trace")]
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,
};
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_once, error_once, info_once, once, trace_once,
tracing::{
debug, debug_span, error, error_span, info, info_span, trace, trace_span, warn, warn_span,
Level,
},
warn_once,
};
pub use tracing_subscriber;

View file

@ -23,6 +23,7 @@ mod cow_arc;
mod default;
mod float_ord;
pub mod intern;
mod once;
pub use crate::uuid::Uuid;
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.
#[macro_export]
macro_rules! trace_once {
($($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.
#[macro_export]
macro_rules! debug_once {
($($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.
#[macro_export]
macro_rules! info_once {
($($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.
#[macro_export]
macro_rules! warn_once {
($($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.
#[macro_export]
macro_rules! error_once {
($($arg:tt)+) => ({
$crate::once!($crate::error!($($arg)+))
$crate::once!($crate::tracing::error!($($arg)+))
});
}