LCOV - code coverage report
Current view: top level - source/server/admin - logs_handler.h (source / functions) Hit Total Coverage
Test: coverage.dat Lines: 0 7 0.0 %
Date: 2024-01-05 06:35:25 Functions: 0 1 0.0 %

          Line data    Source code
       1             : #pragma once
       2             : 
       3             : #include "envoy/buffer/buffer.h"
       4             : #include "envoy/http/codes.h"
       5             : #include "envoy/http/header_map.h"
       6             : #include "envoy/server/admin.h"
       7             : #include "envoy/server/instance.h"
       8             : 
       9             : #include "source/server/admin/handler_ctx.h"
      10             : 
      11             : #include "absl/container/flat_hash_map.h"
      12             : #include "absl/status/statusor.h"
      13             : #include "absl/strings/string_view.h"
      14             : #include "absl/types/optional.h"
      15             : #include "spdlog/spdlog.h"
      16             : 
      17             : namespace Envoy {
      18             : namespace Server {
      19             : 
      20             : class LogsHandler : public HandlerContextBase, Logger::Loggable<Logger::Id::admin> {
      21             : 
      22             : public:
      23             :   LogsHandler(Server::Instance& server);
      24             : 
      25             :   Http::Code handlerLogging(Http::ResponseHeaderMap& response_headers, Buffer::Instance& response,
      26             :                             AdminStream&);
      27             : 
      28             :   Http::Code handlerReopenLogs(Http::ResponseHeaderMap& response_headers,
      29             :                                Buffer::Instance& response, AdminStream&);
      30             : 
      31             :   /**
      32             :    * Returns the valid logging levels as an array of string views.
      33             :    */
      34             :   static std::vector<absl::string_view> levelStrings();
      35             : 
      36             : private:
      37             :   /**
      38             :    * Attempt to change the log level of a logger or all loggers.
      39             :    *
      40             :    * @return OkStatus if there are no non-empty params, StatusCode::kInvalidArgument if
      41             :    * validation failed.
      42             :    *
      43             :    * @param params supplies the incoming endpoint query or post params.
      44             :    */
      45             :   absl::Status changeLogLevel(Http::Utility::QueryParamsMulti& params);
      46             :   absl::Status changeLogLevelsForComponentLoggers(
      47             :       const absl::flat_hash_map<absl::string_view, spdlog::level::level_enum>& changes);
      48             : 
      49           0 :   inline absl::StatusOr<spdlog::level::level_enum> parseLogLevel(absl::string_view level_string) {
      50           0 :     auto level_it = log_levels_.find(level_string);
      51           0 :     if (level_it == log_levels_.end()) {
      52           0 :       return absl::InvalidArgumentError("unknown logger level");
      53           0 :     }
      54           0 :     return level_it->second;
      55           0 :   }
      56             : 
      57             :   // Maps level string to level enum.
      58             :   using StringViewLevelMap = absl::flat_hash_map<absl::string_view, spdlog::level::level_enum>;
      59             :   const StringViewLevelMap log_levels_;
      60             : };
      61             : 
      62             : } // namespace Server
      63             : } // namespace Envoy

Generated by: LCOV version 1.15