| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- //
- // 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/log_manager.h"
- #include "logger/properties.h"
- #include "pattern_layout.h"
- using namespace logging;
- struct pattern_layout : public layout {
- static std::shared_ptr<layout> create(properties const &);
-
- pattern_layout(properties const & props);
- void format(std::ostream & os, logpacket const & pkt) const override;
- std::string header() const override { return header_; }
- std::string footer() const override { return footer_; }
- class format formatter;
- std::string header_;
- std::string footer_;
- };
- using namespace logging::property;
- properties const DEFAULT_PATTERN_LAYOUT{_obj({
- {"charset", _v("en_US.UTF-8")},
- {"pattern", {}},
- {"patternSelector", {}},
- {"replace", _v("")},
- {"header", _v("")},
- {"footer", _v("")},
- {"disableAnsi", _v(false)},
- {"noConsoleNoAnsi", _v(false)}
- })};
- std::shared_ptr<layout> pattern_layout::create(properties const & props) {
- properties const actual = DEFAULT_PATTERN_LAYOUT.mergedWith(props);
- return std::make_shared<pattern_layout>(actual);
- }
- pattern_layout::pattern_layout(properties const & props)
- : formatter(format::parse_format_string(props["pattern"])),
- header_(props["header"]),
- footer_(props["footer"])
- {
-
- }
- void pattern_layout::format(std::ostream & os, logpacket const & pkt) const {
- os << formatter.process(pkt);
- }
- namespace {
- bool _ = layouts::instance().bind("PatternLayout", pattern_layout::create);
- }
|