logger/README.md
Morgan-inspired logging middleware for the Iron web framework.
extern crate iron;
extern crate logger;
use iron::prelude::*;
use logger::Logger;
fn main() {
let (logger_before, logger_after) = Logger::new(None);
let mut chain = Chain::new(no_op_handler);
// Link logger_before as your first before middleware.
chain.link_before(logger_before);
// Link logger_after as your *last* after middleware.
chain.link_after(logger_after);
Iron::new(chain).http("127.0.0.1:3000").unwrap();
}
fn no_op_handler(_: &mut Request) -> IronResult<Response> {
Ok(Response::with(iron::status::Ok))
}
Logger is a part of Iron's core bundle.
Logger emits request and response information using standard rust log facade, formatted with the default format or a custom format string.
Format strings can specify fields to be logged (ANSI terminal colors and attributes are no longer supported as of #82).
If you're using a Cargo.toml to manage dependencies, just add logger to the toml:
[dependencies.logger]
git = "https://github.com/iron/logger.git"
Otherwise, cargo build, and the rlib will be in your target directory.
Along with the online documentation,
you can build a local copy with make doc.
To actually log anything, you will need to use some log implementation that will deliver the logs to your desired location, like standard error output, a file, or a log collecting service. This is not the responsibility of iron-logger alone. There are numerous such implementations to choose from, from simple ones that just write to standard error like env_logger, to more configurable ones like simplelog, to ultimate solutions like slog. You can find more on crates.io.
If you are looking for a turn-key solution, just follow the example in env_logger.
One of us (@reem, @zzmp,
@theptrk, @mcreinhard)
is usually on #iron on the mozilla irc. Come say hi and ask any questions you might have.
We are also usually on #rust and #rust-webdev.