Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #ifndef UTILS_LOGGER_HPP__
- #define UTILS_LOGGER_HPP__ 1
- #include <cstdio>
- #include <cstdarg>
- #include <mutex>
- namespace utils {
- class Logger {
- private:
- FILE* m_file;
- std::recursive_mutex m_mutex;
- bool m_newline;
- void linestart();
- public:
- Logger() = delete;
- explicit Logger( char const* path );
- Logger( Logger const& ) = delete;
- Logger( Logger&& ) = delete;
- ~Logger();
- void writeraw( char const* str );
- __attribute__(( __format__( gnu_printf, 2, 0 ) )) void vwrite( char const* format, va_list args );
- __attribute__(( __format__( gnu_printf, 2, 3 ) )) void write( char const* format, ... );
- __attribute__(( __format__( gnu_printf, 2, 0 ) )) void vwriteln( char const* format, va_list args );
- __attribute__(( __format__( gnu_printf, 2, 3 ) )) void writeln( char const* format, ... );
- void writeln();
- void flush();
- void lock();
- void unlock();
- };
- Logger& MainLogger();
- }
- #define LOG( ... ) ( \
- utils::MainLogger().lock() , \
- utils::MainLogger().write( "[%48s:%24s@%4i]\t", __FILE__, __FUNCTION__, __LINE__ ) , \
- utils::MainLogger().writeln( __VA_ARGS__ ) , \
- utils::MainLogger().unlock() \
- )
- #endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement