// // pattern_layout.cxx // logging // // Created by Sam Jaffe on 4/4/19. // #include "resource_factory/prototype_factory.hpp" #include "logger/detail/layout.h" #include "logger/format.h" #include "logger/log_manager.h" #include "logger/properties.h" using namespace logging; struct pattern_layout : public layout { static std::shared_ptr create(properties const &); pattern_layout(std::string const & fmt); void format(std::ostream & os, logpacket const & pkt) const override; class format formatter; }; std::shared_ptr pattern_layout::create(properties const & props) { return std::make_shared(props["pattern"]); } pattern_layout::pattern_layout(std::string const & fmt) : formatter(format::parse_format_string(fmt)) {} void pattern_layout::format(std::ostream & os, logpacket const & pkt) const { os << formatter.process(pkt); } namespace { bool _ = layouts::instance().bind("PatternLayout", pattern_layout::create); }