summaryrefslogtreecommitdiff
path: root/src/logger.hh
blob: 3700635a15fff5dbe02574dcccdeed41eac4d04c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
// -*- mode: c++; c-basic-offset: 2; -*-

#ifndef LOGGER_HH
#define LOGGER_HH

#include <string>

class Logger {
public:
  virtual ~Logger() {}

  enum Level {
    ERR,
    WARN,
    INFO,
    DBG
  };

  static Logger* create_stderr();
  static Logger* create_syslog(std::string const& name);
  static Logger* create_file(std::string const& path);

  virtual void out(Level lvl, char const* format, ...)
#ifdef HAVE_FUNC_ATTRIBUTE_FORMAT
    __attribute__ ((format (printf, 3, 4)))
#endif
    = 0;

protected:
  Logger() {}
  Logger(Logger const&) = delete;
};

#endif  // LOGGER_HH