1#ifndef XRPL_BASICS_PERFLOG_H 
    2#define XRPL_BASICS_PERFLOG_H 
    4#include <xrpld/core/Config.h> 
    5#include <xrpld/core/JobTypes.h> 
    7#include <xrpl/json/json_value.h> 
    9#include <boost/filesystem.hpp> 
  166template <
typename Func, 
class Rep, 
class Period>
 
  176    auto result = func();
 
  179    auto duration = std::chrono::duration_cast<std::chrono::milliseconds>(
 
  180        end_time - start_time);
 
  181    if (duration > maxDelay)
 
  184            << actionDescription << 
" took " << duration.count() << 
" ms";
 
 
A generic endpoint for log messages.
 
Holds a collection of configuration values.
 
Singleton class that maintains performance counters and optionally writes Json-formatted data to a di...
 
virtual void jobFinish(JobType const type, microseconds dur, int instance)=0
Log job finishing.
 
virtual void jobStart(JobType const type, microseconds dur, steady_time_point startTime, int instance)=0
Log job executing.
 
virtual void rpcFinish(std::string const &method, std::uint64_t requestId)=0
Log successful finish of RPC call.
 
virtual void rpcStart(std::string const &method, std::uint64_t requestId)=0
Log start of RPC call.
 
virtual void jobQueue(JobType const type)=0
Log queued job.
 
virtual void resizeJobs(int const resize)=0
Ensure enough room to store each currently executing job.
 
virtual Json::Value currentJson() const =0
Render currently executing jobs and RPC calls and durations in Json.
 
virtual void rotate()=0
Rotate perf log file.
 
virtual Json::Value countersJson() const =0
Render performance counters in Json.
 
virtual void rpcError(std::string const &method, std::uint64_t requestId)=0
Log errored RPC call.
 
std::chrono::seconds seconds
 
virtual ~PerfLog()=default
 
PerfLog::Setup setup_PerfLog(Section const §ion, boost::filesystem::path const &configDir)
 
auto measureDurationAndLog(Func &&func, std::string const &actionDescription, std::chrono::duration< Rep, Period > maxDelay, beast::Journal const &journal)
 
std::unique_ptr< PerfLog > make_PerfLog(PerfLog::Setup const &setup, Application &app, beast::Journal journal, std::function< void()> &&signalStop)
 
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
 
Configuration from [perf] section of rippled.cfg.
 
boost::filesystem::path perfLog