| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- //
- // console_logger.cxx
- // logging
- //
- // Created by Sam Jaffe on 4/1/19.
- //
- #include <iostream>
- #include "expect/expect.hpp"
- #include "resource_factory/prototype_factory.hpp"
- #include "logger/detail/appender.h"
- #include "logger/detail/layout.h"
- #include "logger/log_manager.h"
- #include "logger/properties.h"
- using namespace logging;
- class console_appender : public appender {
- public:
- static std::shared_ptr<appender> create(properties const& props);
-
- explicit console_appender(std::ostream& os);
-
- void write(logpacket const & pkt) override;
-
- void flush() override;
- private:
- std::ostream& out_;
- };
- std::shared_ptr<appender> console_appender::create(properties const& props) {
- const std::string target = props["target"];
- if (target == "SYSTEM_OUT") {
- return std::make_shared<console_appender>(std::cout);
- } else if (target == "SYSTEM_ERR") {
- return std::make_shared<console_appender>(std::cerr);
- } else {
- throw std::logic_error{target + " is not a valid console"};
- }
- }
- console_appender::console_appender(std::ostream& os) : out_(os) {}
- void console_appender::write(logpacket const & pkt) {
- layout->format(out_, pkt);
- }
- void console_appender::flush() {
- out_.flush();
- }
- namespace {
- bool _ = appenders::instance().bind("Console", console_appender::create);
- }
|