The Gaudi Framework  master (37c0b60a)
JSONSink.cpp
Go to the documentation of this file.
1 /***********************************************************************************\
2 * (c) Copyright 2022 CERN for the benefit of the LHCb and ATLAS collaborations *
3 * *
4 * This software is distributed under the terms of the Apache version 2 licence, *
5 * copied verbatim in the file "LICENSE". *
6 * *
7 * In applying this licence, CERN does not waive the privileges and immunities *
8 * granted to it by virtue of its status as an Intergovernmental Organization *
9 * or submit itself to any jurisdiction. *
10 \***********************************************************************************/
11 
12 #include <Gaudi/BaseSink.h>
13 #include <Gaudi/MonitoringHub.h>
14 
15 #include <fstream>
16 
17 #include <string>
18 
19 namespace Gaudi::Monitoring {
20 
21  class JSONSink : public BaseSink {
22 
23  public:
24  using BaseSink::BaseSink;
25 
26  void flush( bool ) override {
27  if ( m_fileName.empty() ) { return; }
30  [&output]( std::string const& component, std::string const& name, nlohmann::json const& j ) {
31  output.emplace_back( nlohmann::json{
32  { "name", name },
33  { "component", component },
34  { "entity", j },
35  } );
36  } );
37  info() << "Writing JSON file " << m_fileName.value() << endmsg;
39  }
40 
41  private:
42  Gaudi::Property<std::string> m_fileName{ this, "FileName", "json_output.json",
43  "Name of output json file. Empty fileName means no output" };
44  };
45 
46  DECLARE_COMPONENT( JSONSink )
47 
48 } // namespace Gaudi::Monitoring
Gaudi::Monitoring::BaseSink
Base class for all Sinks registering to the Monitoring Hub Should be extended by actual Sinks.
Definition: BaseSink.h:40
Gaudi::Monitoring::JSONSink
Definition: JSONSink.cpp:21
std::string
STL class.
MonitoringHub.h
jsonFromLHCbLog.json
json
Definition: jsonFromLHCbLog.py:86
Gaudi::Monitoring
Definition: JSONSink.cpp:19
gaudirun.output
output
Definition: gaudirun.py:521
Service::name
const std::string & name() const override
Retrieve name of the service
Definition: Service.cpp:332
ProduceConsume.j
j
Definition: ProduceConsume.py:104
std::ofstream
STL class.
Gaudi::Property::value
const ValueType & value() const
Definition: Property.h:237
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:202
Gaudi::Monitoring::BaseSink::applyToAllSortedEntities
void applyToAllSortedEntities(Callable func) const
applies a callable to all monitoring entities ordered by component the callable will be called once p...
Definition: BaseSink.h:110
Gaudi::Monitoring::JSONSink::flush
void flush(bool) override
pure virtual method to be defined by children and responsible for flushing current data of the Sink.
Definition: JSONSink.cpp:26
DECLARE_COMPONENT
#define DECLARE_COMPONENT(type)
Definition: PluginServiceV1.h:46
BaseSink.h
Gaudi::Monitoring::JSONSink::m_fileName
Gaudi::Property< std::string > m_fileName
Definition: JSONSink.cpp:42
Gaudi::Property< std::string >
PrepareBase.out
out
Definition: PrepareBase.py:20