Latest commit b6ba616

日志/控制台消息

运行 Bevy 项目时控制台会输出一些信息,例如:

2022-06-12T13:28:25.445644Z  WARN wgpu_hal::vulkan::instance: Unable to find layer: VK_LAYER_KHRONOS_validation
2022-06-12T13:28:25.565795Z  INFO bevy_render::renderer: AdapterInfo { name: "AMD Radeon RX 6600 XT", vendor: 4098, device: 29695, device_type: DiscreteGpu, backend: Vulkan }
2022-06-12T13:28:25.565795Z  INFO mygame: Entered new map area.

日志信息有几个来源:Bevy 本身、依赖(例如 wgpu)、代码(例如调用了 info!())。

Bevy 提供了一个日志记录框架,该框架比简单地使用 Rust 的 println/eprintln 要先进得多。日志消息可以具有元数据,例如警告级别、时间戳、Rust 模块来源。元数据与消息的内容会一起打印出来。

级别

级别区分消息的重要程度,并允许过滤消息。

级别有:

  • error:报错了,程序无法运行
  • warn:发生了不正常的事,程序可以运行
  • info:一般的消息
  • debug:用于开发过程的调试
  • trace:用于非常冗长的调试数据,例如转储值

打印自定义日志消息

要显示消息,只需使用以消息级别命名的宏:

#![allow(unused)]
fn main() {
error!("Unknown condition!");
warn!("Something unusual happened!");
info!("Entered game level: {}", level_id);
debug!("x: {}, state: {:?}", x, state);
trace!("entity transform: {:?}", transform);
}

过滤信息

LogSettings(配置类资源)来控制怎样过滤消息。

#![allow(unused)]
fn main() {
app.insert_resource(LogSettings {
    filter: "info,wgpu_core=warn,wgpu_hal=warn,mygame=debug".into(),
    level: bevy::log::level::DEBUG,
});
}

todo:看不懂、未验证