среда, 21 августа 2013 г.

struct logger

asd
 
/** Привет, поделюсь простым способом ведения логов. Некоторые думают, что добавить логи в программу очень сложно и пишут простые классы на 1000 строк. Вот простой способ. */

template <typename Out>
struct logger
{
  logger(Out& out): m_out(out) { m_out << "LOG: "; }
  ~logger() { m_out << "\n"; }
  Out& get() { return m_out; }

private:
  Out& m_out;
};

/** Главное, чтобы Out умел операцию "<<"; Таким образом, мы можем подсунуть хоть std::fstream, хоть std::cout.
Использование: */

#include <iostream>
#define LOG logger<std::ostream>(std::cout).get()

LOG << "Hello, world! " << 1;
LOG << "Hello, world! " << 2;

/** Класс logger уже дружен со многими стандартными классами. Так же он легко используем и расширяем. Это я покажу в следующем посте. */

Комментариев нет:

Отправить комментарий