aboutsummaryrefslogtreecommitdiff
path: root/src/libutil/logging.hh
diff options
context:
space:
mode:
Diffstat (limited to 'src/libutil/logging.hh')
-rw-r--r--src/libutil/logging.hh34
1 files changed, 19 insertions, 15 deletions
diff --git a/src/libutil/logging.hh b/src/libutil/logging.hh
index 08a116175..567af361e 100644
--- a/src/libutil/logging.hh
+++ b/src/libutil/logging.hh
@@ -40,6 +40,19 @@ class Logger
public:
+ struct Field
+ {
+ // FIXME: use std::variant.
+ enum { tInt, tString } type;
+ uint64_t i = 0;
+ std::string s;
+ Field(const std::string & s) : type(tString), s(s) { }
+ Field(const char * s) : type(tString), s(s) { }
+ Field(const uint64_t & i) : type(tInt), i(i) { }
+ };
+
+ typedef std::vector<Field> Fields;
+
virtual ~Logger() { }
virtual void log(Verbosity lvl, const FormatOrString & fs) = 0;
@@ -51,7 +64,8 @@ public:
virtual void warn(const std::string & msg);
- virtual void startActivity(ActivityId act, ActivityType type, const std::string & s) { };
+ virtual void startActivity(ActivityId act, ActivityType type,
+ const std::string & s, const Fields & fields) { };
virtual void stopActivity(ActivityId act) { };
@@ -59,18 +73,7 @@ public:
virtual void setExpected(ActivityId act, ActivityType type, uint64_t expected) { };
- struct Field
- {
- // FIXME: use std::variant.
- enum { tInt, tString } type;
- uint64_t i = 0;
- std::string s;
- Field(const std::string & s) : type(tString), s(s) { }
- Field(const char * s) : type(tString), s(s) { }
- Field(const uint64_t & i) : type(tInt), i(i) { }
- };
-
- virtual void result(ActivityId act, ResultType type, const std::vector<Field> & fields) { };
+ virtual void result(ActivityId act, ResultType type, const Fields & fields) { };
};
struct Activity
@@ -79,7 +82,8 @@ struct Activity
const ActivityId id;
- Activity(Logger & logger, ActivityType type, const std::string & s = "");
+ Activity(Logger & logger, ActivityType type, const std::string & s = "",
+ const Logger::Fields & fields = {});
Activity(const Activity & act) = delete;
@@ -95,7 +99,7 @@ struct Activity
template<typename... Args>
void result(ResultType type, const Args & ... args)
{
- std::vector<Logger::Field> fields;
+ Logger::Fields fields;
nop{(fields.emplace_back(Logger::Field(args)), 1)...};
logger.result(id, type, fields);
}