A library for writing host-specific, single-binary configuration management and deployment tools
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

41 lines
730 B

8 years ago
  1. use std::io::stderr;
  2. use std::io::Write;
  3. pub trait Logger {
  4. fn write(&mut self, &str);
  5. fn debug(&mut self, &str);
  6. }
  7. pub struct StdErrLogger;
  8. impl Logger for StdErrLogger {
  9. fn debug(&mut self, str: &str) {
  10. writeln!(&mut stderr(), "{}", str).unwrap();
  11. }
  12. fn write(&mut self, str: &str) {
  13. writeln!(&mut stderr(), "{}", str).unwrap();
  14. }
  15. }
  16. pub struct FilteringLogger<'a> {
  17. logger: &'a mut Logger
  18. }
  19. impl<'a> FilteringLogger<'a> {
  20. pub fn new(logger: &'a mut Logger) -> Self {
  21. FilteringLogger { logger: logger }
  22. }
  23. }
  24. impl<'a> Logger for FilteringLogger<'a> {
  25. fn debug(&mut self, str: &str) {
  26. return
  27. }
  28. fn write(&mut self, str: &str) {
  29. self.logger.write(str)
  30. }
  31. }
  32. #[cfg(test)]
  33. mod test {
  34. }