fork(2) download
  1. #include <iostream>
  2. #include <ctime>
  3. #include <iomanip>
  4.  
  5. class Logger {
  6. private:
  7. std::ostream &stream;
  8. void print_time() {
  9. std::time_t t = std::time(nullptr);
  10. stream << "[" << std::put_time(std::localtime(&t), "%F %T %Z") << "] ";
  11. }
  12. public:
  13. //Maybe also take options for how to log?
  14. Logger(std::ostream &stream) : stream(stream) { }
  15. template <typename T>
  16. std::ostream &operator<<(const T &thing) {
  17. print_time();
  18. return stream << thing;
  19. }
  20. };
  21.  
  22. int main()
  23. {
  24. Logger log(std::cout);
  25. log << "Warning!" << std::endl;
  26. log << "Another warning!" << std::endl;
  27. }
Success #stdin #stdout 0s 4416KB
stdin
Standard input is empty
stdout
[2020-01-23 17:10:07 UTC] Warning!
[2020-01-23 17:10:07 UTC] Another warning!