summaryrefslogtreecommitdiff
path: root/kernel/io/logger/base.h
blob: 7aa9e2d4d77da30431b7d45ee2e1d1c415a638e2 (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
#ifndef HOS_IO_BASE_H
#define HOS_IO_BASE_H

namespace hos::io
{
    enum log_level
    {
        DEBUG,
        INFO,
        WARN,
        ERROR,
        FATAL
    };

    /// Ah, the glorious CRTP...
    template <typename concrete_logger>
    class logger
    {
    public:
        logger  (enum log_level level);

        void            set_level   (enum log_level level);
        void            write       (enum log_level level, const char *message, ...);
    protected:
        char            buffer[512];
    private:
        enum log_level  level;
    };
}

#endif