Skip to content

Commit 9965aba

Browse files
committed
[update] logging for lambda modules.
1 parent 99f4840 commit 9965aba

File tree

11 files changed

+177
-98
lines changed

11 files changed

+177
-98
lines changed

crates/lambda-rs-logging/README.md

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
# lambda-rs-logging
2+
A simple logger implementation for lamba-rs crates. Inspired by
3+
python's [logging](https://docs.python.org/3/library/logging.html) module.
4+
5+
6+
# Installation
7+
First, add the following to your `Cargo.toml`:
8+
```toml
9+
[dependencies]
10+
lambda-rs-logging = "2023.1.30"
11+
```
12+
13+
or run this command from your project directory:
14+
```bash
15+
cargo add lambda-rs-logging
16+
```
17+
18+
# Getting started
19+
## Using the global logger
20+
```rust
21+
use logging;
22+
23+
fn main() {
24+
logging::trace!("Hello world");
25+
logging::debug!("Hello world");
26+
logging::info!("Hello world");
27+
logging::warn!("Hello world");
28+
logging::error!("Hello world");
29+
logging::fatal!("Hello world");
30+
}
31+
```
32+
33+
## Using an instance of the logger
34+
```rust
35+
use logging::Logger;
36+
37+
fn main() {
38+
let logger = Logger::new("my-logger");
39+
logger.trace("Hello world");
40+
logger.debug("Hello world");
41+
logger.info("Hello world");
42+
logger.warn("Hello world");
43+
logger.error("Hello world");
44+
logger.fatal("Hello world");
45+
}
46+
```

crates/lambda-rs-logging/src/handler.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -125,12 +125,12 @@ impl ConsoleHandler {
125125
);
126126

127127
let colored_message = match log_level {
128-
LogLevel::TRACE => format!("\x1B[34m{}\x1B[0m\n", log_message),
129-
LogLevel::DEBUG => format!("\x1B[33m{}\x1B[0m\n", log_message),
130-
LogLevel::INFO => format!("\x1B[32m{}\x1B[0m\n", log_message),
131-
LogLevel::WARN => format!("\x1B[31m{}\x1B[0m\n", log_message),
132-
LogLevel::ERROR => format!("\x1B[31;1m{}\x1B[0m\n", log_message),
133-
LogLevel::FATAL => format!("\x1B[31;1m{}\x1B[0m\n", log_message),
128+
LogLevel::TRACE => format!("\x1B[37m{}\x1B[0m", log_message),
129+
LogLevel::DEBUG => format!("\x1B[35m{}\x1B[0m", log_message),
130+
LogLevel::INFO => format!("\x1B[32m{}\x1B[0m", log_message),
131+
LogLevel::WARN => format!("\x1B[33m{}\x1B[0m", log_message),
132+
LogLevel::ERROR => format!("\x1B[31;1m{}\x1B[0m", log_message),
133+
LogLevel::FATAL => format!("\x1B[31;1m{}\x1B[0m", log_message),
134134
};
135135

136136
println!("{}", colored_message);

crates/lambda-rs-logging/src/lib.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -126,50 +126,50 @@ impl Logger {
126126
}
127127
}
128128

129-
static mut LOGGER: Option<Logger> = None;
129+
pub(crate) static mut LOGGER: Option<Logger> = None;
130130

131131
/// Trace logging macro using the global logger instance.
132132
#[macro_export]
133133
macro_rules! trace {
134134
($($arg:tt)*) => {
135-
Logger::global().trace(format!("{}", format_args!($($arg)*)));
135+
logging::Logger::global().trace(format!("{}", format_args!($($arg)*)));
136136
};
137137
}
138138

139139
/// Trace logging macro using the global logger instance.
140140
#[macro_export]
141141
macro_rules! debug {
142142
($($arg:tt)*) => {
143-
Logger::global().debug(format!("{}", format_args!($($arg)*)));
143+
logging::Logger::global().debug(format!("{}", format_args!($($arg)*)));
144144
};
145145
}
146146

147147
/// Trace logging macro using the global logger instance.
148148
#[macro_export]
149149
macro_rules! info {
150150
($($arg:tt)*) => {
151-
Logger::global().info(format!("{}", format_args!($($arg)*)));
151+
logging::Logger::global().info(format!("{}", format_args!($($arg)*)));
152152
};
153153
}
154154

155155
// Define logging macros that use the global logger instance
156156
#[macro_export]
157157
macro_rules! warn {
158158
($($arg:tt)*) => {
159-
Logger.global().warn(format!("{}", format_args!($($arg)*)));
159+
logging::Logger::global().warn(format!("{}", format_args!($($arg)*)));
160160
};
161161
}
162162

163163
#[macro_export]
164164
macro_rules! error {
165165
($($arg:tt)*) => {
166-
Logger::global().error(format!("{}", format_args!($($arg)*)));
166+
logging::Logger::global().error(format!("{}", format_args!($($arg)*)));
167167
};
168168
}
169169

170170
#[macro_export]
171171
macro_rules! fatal {
172172
($($arg:tt)*) => {
173-
Logger::global().fatal(format!("{}", format_args!($($arg)*)));
173+
logging::Logger::global().fatal(format!("{}", format_args!($($arg)*)));
174174
};
175175
}

crates/lambda-rs-platform/src/shaderc/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ pub struct ShaderCompiler {
3333
}
3434

3535
/// Meta Representations of real shaders to use for easy compilation
36+
#[derive(Debug, Clone)]
3637
pub enum VirtualShader {
3738
File {
3839
path: String,

crates/lambda-rs/src/render/buffer.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ pub use lambda_platform::gfx::buffer::{
1717
Properties,
1818
Usage,
1919
};
20+
use logging;
2021

2122
use super::{
2223
mesh::Mesh,
@@ -143,12 +144,21 @@ impl BufferBuilder {
143144

144145
match buffer_allocation {
145146
Ok(buffer) => {
147+
logging::debug!(
148+
"Buffer allocation for {:?} succeeded.",
149+
self.buffer_type
150+
);
146151
return Ok(Buffer {
147152
buffer: Rc::new(buffer),
148153
buffer_type: self.buffer_type,
149154
});
150155
}
151156
Err(error) => {
157+
logging::error!(
158+
"Buffer allocation for {:?} failed with error: {:?}",
159+
self.buffer_type,
160+
error
161+
);
152162
return Err(error);
153163
}
154164
}

crates/lambda-rs/src/render/pipeline.rs

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -27,15 +27,19 @@ pub struct RenderPipeline {
2727
impl RenderPipeline {
2828
/// Destroy the render pipeline with the render context that created it.
2929
pub fn destroy(self, render_context: &RenderContext) {
30+
logging::trace!("Destroying render pipeline");
3031
Rc::try_unwrap(self.pipeline)
3132
.expect("Failed to destroy render pipeline")
3233
.destroy(render_context.internal_gpu());
3334

35+
logging::trace!("Destroying buffers");
3436
for buffer in self.buffers {
3537
Rc::try_unwrap(buffer)
3638
.expect("Failed to get high level buffer.")
3739
.destroy(render_context);
3840
}
41+
42+
logging::info!("Render pipeline & all attached buffers destroyed");
3943
}
4044
}
4145

@@ -103,21 +107,21 @@ impl RenderPipelineBuilder {
103107
vertex_shader: &Shader,
104108
fragment_shader: Option<&Shader>,
105109
) -> RenderPipeline {
106-
println!("[DEBUG] Building render pipeline...");
110+
logging::debug!("Building render pipeline");
107111

108-
print!("[DEBUG] Building vertex shader... ");
112+
logging::debug!("Building vertex shader... ");
109113
let vertex_shader_module = ShaderModuleBuilder::new().build(
110114
render_context.internal_mutable_gpu(),
111115
&vertex_shader.as_binary(),
112116
ShaderModuleType::Vertex,
113117
);
114118

115-
println!(
116-
" Done. (Vertex shader: {} bytes)",
119+
logging::debug!(
120+
"\tDone. (Vertex shader: {} bytes)",
117121
vertex_shader.as_binary().len()
118122
);
119123

120-
print!("[DEBUG] Building fragment shader... ");
124+
logging::debug!("Building fragment shader... ");
121125
let fragment_shader_module = match fragment_shader {
122126
Some(shader) => Some(ShaderModuleBuilder::new().build(
123127
render_context.internal_mutable_gpu(),
@@ -127,8 +131,8 @@ impl RenderPipelineBuilder {
127131
None => None,
128132
};
129133

130-
println!(
131-
" Done. (Fragment shader: {} bytes)",
134+
logging::debug!(
135+
"\tDone. (Fragment shader: {} bytes)",
132136
fragment_shader.map(|s| s.as_binary().len()).unwrap_or(0)
133137
);
134138

crates/lambda-rs/src/render/render_pass.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ impl RenderPass {
1616
Rc::try_unwrap(self.render_pass)
1717
.expect("Failed to destroy render pass. Is something holding a reference to it?")
1818
.destroy(render_context.internal_gpu());
19+
logging::debug!("Render pass destroyed");
1920
}
2021
}
2122

crates/lambda-rs/src/render/shader.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ impl ShaderBuilder {
2222
/// Compiles the virtual shader into a real shader with SPIR-V binary
2323
/// representation.
2424
pub fn build(&mut self, virtual_shader: VirtualShader) -> Shader {
25+
logging::trace!("Compiling shader: {:?}", virtual_shader);
2526
let binary = self.compiler.compile_into_binary(&virtual_shader);
2627

2728
return Shader {

crates/lambda-rs/src/render/window.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@ impl Window {
8181
.with_window_properties(window_properties, event_loop)
8282
.build();
8383

84+
logging::debug!("Created window: {}", name);
8485
return Self { window_handle };
8586
}
8687

crates/lambda-rs/src/runtime.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
33
use std::fmt::Debug;
44

5+
use logging;
6+
57
/// A runtime is an important but simple type in lambda that is responsible for
68
/// executing the application. The event loop for the application is started
79
/// within the runtime and should live for the duration of the application.
@@ -23,10 +25,10 @@ pub fn start_runtime<R: Sized + Debug, E: Sized + Debug, T: Runtime<R, E>>(
2325
let runtime_result = runtime.run();
2426
match runtime_result {
2527
Ok(_) => {
26-
print!("[INFO] Runtime finished successfully.");
28+
logging::info!("Runtime finished successfully.");
2729
}
2830
Err(e) => {
29-
println!("[FATAL] Runtime panicked because: {:?}", e);
31+
logging::fatal!("Runtime panicked because: {:?}", e);
3032
}
3133
}
3234
}

0 commit comments

Comments
 (0)