diff --git a/.gitignore b/.gitignore index d9332e9a..fe40cb05 100644 --- a/.gitignore +++ b/.gitignore @@ -8,4 +8,7 @@ # exclude binarys in examples folder /examples/* !/examples/*.rs + +# exlcude logging *.log +/logs/ diff --git a/Cargo.lock b/Cargo.lock index 3c7149af..ec8e5365 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,6 +2,12 @@ # It is not intended for manual editing. version = 3 +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + [[package]] name = "aho-corasick" version = "0.7.18" @@ -89,6 +95,15 @@ dependencies = [ "syn", ] +[[package]] +name = "crc32fast" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" +dependencies = [ + "cfg-if 1.0.0", +] + [[package]] name = "ffplayout-engine-rs" version = "0.1.0" @@ -96,6 +111,7 @@ dependencies = [ "chrono", "clap", "ffprobe", + "file-rotate", "log", "notify", "rand", @@ -117,6 +133,16 @@ dependencies = [ "serde_json", ] +[[package]] +name = "file-rotate" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8071df7315b1cd4006ce687043f393cca212761889b3626c1444ae06e8f72d0" +dependencies = [ + "chrono", + "flate2", +] + [[package]] name = "filetime" version = "0.2.15" @@ -129,6 +155,18 @@ dependencies = [ "winapi 0.3.9", ] +[[package]] +name = "flate2" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e6988e897c1c9c485f43b47a529cef42fde0547f9d8d41a7062518f1d8fc53f" +dependencies = [ + "cfg-if 1.0.0", + "crc32fast", + "libc", + "miniz_oxide", +] + [[package]] name = "fsevent" version = "0.4.0" @@ -290,6 +328,16 @@ version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a" +[[package]] +name = "miniz_oxide" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a92518e98c078586bc6c934028adcca4c92a53d6a958196de835170a01d84e4b" +dependencies = [ + "adler", + "autocfg", +] + [[package]] name = "mio" version = "0.6.23" diff --git a/Cargo.toml b/Cargo.toml index e1e6f4b4..7e4b4824 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -6,18 +6,19 @@ version = "0.1.0" edition = "2021" [dependencies] -serde = { version = "1.0", features = ["derive"] } -serde_yaml = "0.8" -serde_json = "1.0" -regex = "1" chrono = "0.4" clap = { version = "3.0.14", features = ["derive"] } -notify = "4.0.0" -walkdir = "2" -rand = "0.8.5" ffprobe = "0.3" +file-rotate = "0.6.0" log = "0.4.14" +notify = "4.0.0" +rand = "0.8.5" +regex = "1" +serde = { version = "1.0", features = ["derive"] } +serde_json = "1.0" +serde_yaml = "0.8" simplelog = { version = "^0.11.2", features = ["paris"] } +walkdir = "2" # tokio = { version = "1.16.1", features = ["full"] } [[bin]] diff --git a/examples/logging.rs b/examples/logging.rs index 28d75014..873f211c 100644 --- a/examples/logging.rs +++ b/examples/logging.rs @@ -3,10 +3,10 @@ extern crate simplelog; use simplelog::*; -use std::fs::File; +use file_rotate::{FileRotate, ContentLimit, suffix::AppendCount, compression::Compression}; fn main() { - TermLogger::init(LevelFilter::Debug, Config::default(), TerminalMode::Mixed, ColorChoice::Auto).unwrap(); + //TermLogger::init(LevelFilter::Debug, Config::default(), TerminalMode::Mixed, ColorChoice::Auto).unwrap(); //SimpleLogger::init(LevelFilter::Debug, Config::default()).unwrap(); // CombinedLogger::init( // vec![ @@ -15,7 +15,18 @@ fn main() { // ] // ).unwrap(); - error!("Bright red error"); - info!("This only appears in the log file"); - debug!("This level is currently not enabled for any logger"); + let log = || { + FileRotate::new( + "logs/ffplayout.log", + AppendCount::new(7), + ContentLimit::Lines(1000), + Compression::None, + ) + }; + + WriteLogger::init(LevelFilter::Debug, Config::default(), log()).unwrap(); + + for idx in 1..1500 { + info!("{idx}"); + } }