Pārlūkot izejas kodu

Support complete log in JsonLayout and header/footer PatternLayout.

Sam Jaffe 6 gadi atpakaļ
vecāks
revīzija
ce150d2b17
2 mainītis faili ar 19 papildinājumiem un 6 dzēšanām
  1. 7 3
      src/loggers/json_layout.cxx
  2. 12 3
      src/loggers/pattern_layout.cxx

+ 7 - 3
src/loggers/json_layout.cxx

@@ -24,10 +24,13 @@ public:
   
   json_layout(properties const & props);
   void format(std::ostream & os, logpacket const & pkt) const override;
-  
+  std::string header() const override { return complete_ ? "[" : ""; }
+  std::string footer() const override { return complete_ ? "]" : ""; }
+  std::string separator() const override { return complete_ ? "," : ""; }
+
 private:
   Json::StreamWriterBuilder build;
-  bool eol_, log_as_json_, include_location_;
+  bool eol_, log_as_json_, include_location_, complete_;
 };
 
 using namespace logging::property;
@@ -49,7 +52,8 @@ std::shared_ptr<layout> json_layout::create(properties const & props) {
 json_layout::json_layout(properties const & props)
 : eol_(props["eventEol"]),
   log_as_json_(props["objectMessageAsJsonObject"]),
-  include_location_(props["locationInfo"])
+  include_location_(props["locationInfo"]),
+  complete_(props["complete"])
 {
   build["indentation"] = props["compact"] ? "" : "  ";
 }

+ 12 - 3
src/loggers/pattern_layout.cxx

@@ -19,8 +19,12 @@ struct pattern_layout : public layout {
   
   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;
@@ -40,8 +44,13 @@ std::shared_ptr<layout> pattern_layout::create(properties const & props) {
   return std::make_shared<pattern_layout>(actual);
 }
 
-pattern_layout::pattern_layout(properties const & props) :
-  formatter(format::parse_format_string(props["pattern"])) {}
+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);