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.

38 lines
717 B

8 years ago
5 years ago
8 years ago
5 years ago
5 years ago
8 years ago
5 years ago
8 years ago
5 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 dyn Logger,
  18. }
  19. impl<'a> FilteringLogger<'a> {
  20. pub fn new(logger: &'a mut dyn Logger) -> Self {
  21. FilteringLogger { logger }
  22. }
  23. }
  24. impl<'a> Logger for FilteringLogger<'a> {
  25. fn debug(&mut self, _str: &str) {}
  26. fn write(&mut self, str: &str) {
  27. self.logger.write(str)
  28. }
  29. }
  30. #[cfg(test)]
  31. mod test {}