log4rs_rolling_file/policy/compound/trigger/size/
mod.rs1use log4rs::file::{Deserialize, Deserializers};
4use serde_value::Value;
5use std::error::Error;
6
7use LogFile;
8use policy::compound::trigger::Trigger;
9use policy::compound::trigger::size::config::Config;
10
11#[cfg_attr(rustfmt, rustfmt_skip)]
12mod config;
13
14#[derive(Debug)]
16pub struct SizeTrigger {
17 limit: u64,
18}
19
20impl SizeTrigger {
21 pub fn new(limit: u64) -> SizeTrigger {
24 SizeTrigger { limit: limit }
25 }
26}
27
28impl Trigger for SizeTrigger {
29 fn trigger(&self, file: &LogFile) -> Result<bool, Box<Error>> {
30 Ok(file.len() > self.limit)
31 }
32}
33
34pub struct SizeTriggerDeserializer;
47
48impl Deserialize for SizeTriggerDeserializer {
49 type Trait = Trigger;
50
51 fn deserialize(&self, config: Value, _: &Deserializers) -> Result<Box<Trigger>, Box<Error>> {
52 let config: Config = try!(config.deserialize_into());
53 Ok(Box::new(SizeTrigger::new(config.limit)))
54 }
55}