#logger #logging #log #console


A library for polished, clean and colourful console logging and error handling

5 stable releases

1.2.1 Oct 5, 2023
1.2.0 Sep 10, 2023
1.1.0 Aug 24, 2023

#202 in Debugging

Download history 87/week @ 2023-08-17 33/week @ 2023-08-24 1/week @ 2023-08-31 23/week @ 2023-09-07 33/week @ 2023-09-14 42/week @ 2023-09-21 67/week @ 2023-09-28 32/week @ 2023-10-05 11/week @ 2023-10-12 20/week @ 2023-10-19 13/week @ 2023-10-26

78 downloads per month


213 lines


A library for polished, clean and colourful console logging and error handling.

Colourful Printing

Some utils for printing to the console in colour.

  • Supported Colours

    • None
    • Pink
    • White
    • Blue
    • Green
    • Cyan
    • Red
    • Black
    • Yellow
  • Usage

    use soulog::*;
    // The macro is pretty simple, it's just a list of strings and you have to surround each string with a colour (in lowercase)
    // If you don't want a colour, then use `none` for the default colour of the console.
    let colourful_text = colour_format![blue("["), none("Example"), blue("] "), none("Here is an example body!")];
    println!("{}", colourful_text); // Prints the colourful text to screen


  • A struct that determines what to do with logs and errors, and how to handle them.
  • The default logger for smaller applications is soulog::sbl::PanicLogger which panics on errors


For when you want to log an event or just to give an update to the user through the console

use soulog::*;

pub fn process(mut logger: impl Logger) {
    // First part is the logger surrounded by parenthesis, this is the destination the log is going to
    // The second part is the origin of the log, the function is called `process` so it should be `Process`
    // The third part is the log body, it should be formatted like in a `format!()` macro
    log!((logger) Process("Example log of a number: {}", 12));
    // You can also have error-like logs such as inconvenience logs
    log!((logger.error) Process("Example inconvenience log") as Inconvenience);

No runtime deps