@@ -32,24 +32,23 @@ const std::string& Metric::getName() const
3232
3333Metric::Metric (int value, const std::string& name, Verbosity verbosity) :
3434 mValue (value), mName (name), mTimestamp (Metric::getCurrentTimestamp()), mVerbosity (verbosity)
35- {
36- }
35+ { overwriteVerbosity (); }
3736
3837Metric::Metric (std::string value, const std::string& name, Verbosity verbosity) :
3938 mValue (value), mName (name), mTimestamp (Metric::getCurrentTimestamp()), mVerbosity (verbosity)
40- {}
39+ { overwriteVerbosity (); }
4140
4241Metric::Metric (double value, const std::string& name, Verbosity verbosity) :
4342 mValue (value), mName (name), mTimestamp (Metric::getCurrentTimestamp()), mVerbosity (verbosity)
44- {}
43+ { overwriteVerbosity (); }
4544
4645Metric::Metric (uint64_t value, const std::string& name, Verbosity verbosity) :
4746 mValue (value), mName (name), mTimestamp (Metric::getCurrentTimestamp()), mVerbosity (verbosity)
48- {}
47+ { overwriteVerbosity (); }
4948
5049Metric::Metric (boost::variant< int , std::string, double , uint64_t > value, const std::string& name, Verbosity verbosity) :
5150 mValue (value), mName (name), mTimestamp (Metric::getCurrentTimestamp()), mVerbosity (verbosity)
52- {}
51+ { overwriteVerbosity (); }
5352
5453boost::variant< int , std::string, double , uint64_t > Metric::getValue () const
5554{
@@ -61,6 +60,20 @@ Verbosity Metric::getVerbosity()
6160 return mVerbosity ;
6261}
6362
63+ void Metric::setVerbosityPolicy (Verbosity verbosity, const std::regex& regex)
64+ {
65+ mRegexPolicy .insert ({static_cast <std::underlying_type<tags::Value>::type>(verbosity), regex});
66+ }
67+
68+ void Metric::overwriteVerbosity ()
69+ {
70+ for (auto const & [verbosity, regex] : mRegexPolicy ) {
71+ if (std::regex_match (mName , regex)) {
72+ mVerbosity = static_cast <Verbosity>(verbosity);
73+ }
74+ }
75+ }
76+
6477Metric&& Metric::addTag(tags::Key key, tags::Value value)
6578{
6679 mTags .push_back ({static_cast <std::underlying_type<tags::Key>::type>(key), static_cast <std::underlying_type<tags::Value>::type>(value)});
@@ -95,6 +108,7 @@ void Metric::setDefaultVerbosity(Verbosity verbosity)
95108}
96109
97110Verbosity Metric::DefaultVerbosity = Verbosity::Info;
111+ std::map<std::underlying_type<Verbosity>::type, std::regex> Metric::mRegexPolicy ;
98112
99113} // namespace monitoring
100114} // namespace o2
0 commit comments