1
#pragma once
2

            
3
#include "source/common/formatter/substitution_formatter.h"
4
#include "source/extensions/access_loggers/common/access_log_base.h"
5

            
6
namespace Envoy {
7
namespace Extensions {
8
namespace AccessLoggers {
9
namespace File {
10

            
11
/**
12
 * Access log Instance that writes logs to a file.
13
 */
14
class FileAccessLog : public Common::ImplBase {
15
public:
16
  FileAccessLog(const Filesystem::FilePathAndType& access_log_file_info,
17
                AccessLog::FilterPtr&& filter, Formatter::FormatterPtr&& formatter,
18
                AccessLog::AccessLogManager& log_manager);
19

            
20
private:
21
  // Common::ImplBase
22
  void emitLog(const Formatter::Context& context,
23
               const StreamInfo::StreamInfo& stream_info) override;
24

            
25
  AccessLog::AccessLogFileSharedPtr log_file_;
26
  Formatter::FormatterPtr formatter_;
27
};
28

            
29
} // namespace File
30
} // namespace AccessLoggers
31
} // namespace Extensions
32
} // namespace Envoy