1
#pragma once
2

            
3
#include <string>
4

            
5
#include "envoy/access_log/access_log_config.h"
6

            
7
namespace Envoy {
8
namespace Extensions {
9
namespace AccessLoggers {
10
namespace OpenTelemetry {
11

            
12
/**
13
 * Config registration for the OpenTelemetry (gRPC) access log. @see AccessLogInstanceFactory.
14
 */
15
class AccessLogFactory : public Envoy::AccessLog::AccessLogInstanceFactory {
16
public:
17
  ::Envoy::AccessLog::InstanceSharedPtr
18
  createAccessLogInstance(const Protobuf::Message& config, ::Envoy::AccessLog::FilterPtr&& filter,
19
                          Server::Configuration::GenericFactoryContext& context,
20
                          std::vector<Formatter::CommandParserPtr>&& command_parsers = {}) override;
21

            
22
  ProtobufTypes::MessagePtr createEmptyConfigProto() override;
23

            
24
  std::string name() const override;
25
};
26

            
27
} // namespace OpenTelemetry
28
} // namespace AccessLoggers
29
} // namespace Extensions
30
} // namespace Envoy