| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- //
- // logger.hpp
- // logger
- //
- // Created by Sam Jaffe on 9/3/16.
- //
- #pragma once
- //
- // Logger.hpp
- // DanmakuRPG
- //
- // Created by Sam Jaffe on 7/18/15.
- // Copyright (c) 2015 Sam Jaffe. All rights reserved.
- //
- #pragma once
- #include <cstdarg>
- #include <cstdlib>
- #include <cstring>
- #include <memory>
- #include <string>
- #include "logger_fwd.h"
- #include "format.h"
- #define log_here { __FILE__, __LINE__, STRING( FUNCTION ) }
- #define log_message( logger, lvl, ... ) \
- logger.log( level::lvl, log_here, __VA_ARGS__ )
- namespace logging {
- class logger_impl;
- class manager;
- class logger {
- public:
- ~logger();
- template <typename... Args>
- inline void log(level ll, std::string const & interp, Args && ...args) {
- log(ll, location_info{}, interp, std::forward<Args>(args)...);
- }
-
- template <typename... Args>
- inline void log(level ll, location_info info,
- std::string const & interp, Args && ...args) {
- log(ll, info, message(interp, std::forward<Args>(args)...));
- }
-
- void flush();
-
- protected:
- logger(std::string const & name, std::shared_ptr<logger_impl> impl);
-
- private:
- friend class manager;
- void log(level ll, location_info info, message const&);
- private:
- std::string const logger_name_;
- std::shared_ptr<logger_impl> impl_;
- };
- }
|