Apache Mesos
Public Member Functions | Static Public Member Functions | List of all members
mesos::slave::ContainerLogger Class Referenceabstract

A containerizer component used to manage container logs. More...

#include <container_logger.hpp>

Inheritance diagram for mesos::slave::ContainerLogger:
mesos::internal::logger::LogrotateContainerLogger mesos::internal::slave::SandboxContainerLogger

Public Member Functions

virtual ~ContainerLogger ()
virtual Try< Nothinginitialize ()=0
 Initializes this container logger. More...
virtual process::Future< ContainerIOprepare (const ContainerID &containerId, const ContainerConfig &containerConfig)=0
 Called before Mesos creates a container. More...

Static Public Member Functions

static Try< ContainerLogger * > create (const Option< std::string > &type)
 Create and initialize a container logger instance of the given type, specified by the container_logger agent flag. More...

Detailed Description

A containerizer component used to manage container logs.

The ContainerLogger is responsible for handling the stdout/stderr of containers.

The container logger is also responsible for providing a public interface for retrieving the logs.

Care should be taken when implementing stateful container loggers: the logger should be capable of recovering its state and its managed containers during the agent recovery process in absence of such interface methods as ContainerLogger::recover() and ContainerLogger::cleanup().

The lack of ContainerLogger::cleanup() or similar prevents synchronization on container termination, i.e., delaying sending a terminal status update for the container until the logger reports completion.

TODO(josephw): Provide an interface for exposing custom log-retrieval endpoints via the Mesos web UI.

Constructor & Destructor Documentation

virtual mesos::slave::ContainerLogger::~ContainerLogger ( )

Member Function Documentation

static Try<ContainerLogger*> mesos::slave::ContainerLogger::create ( const Option< std::string > &  type)

Create and initialize a container logger instance of the given type, specified by the container_logger agent flag.

If the type is not specified, a default container logger instance will be created.

See ContainerLogger::initialize.

virtual Try<Nothing> mesos::slave::ContainerLogger::initialize ( )
pure virtual

Initializes this container logger.

This method must be called before any other member function is called.

The container logger module should return an error if the particular module is not supported. For example, if the module implements log rotation via the logrotate utility, the module can return an error if the utility is not found.

Implemented in mesos::internal::logger::LogrotateContainerLogger, and mesos::internal::slave::SandboxContainerLogger.

virtual process::Future<ContainerIO> mesos::slave::ContainerLogger::prepare ( const ContainerID &  containerId,
const ContainerConfig &  containerConfig 
pure virtual

Called before Mesos creates a container.

The container logger is given some of the arguments which the containerizer will use to launch a container. The container logger should return a ContainerIO which tells the containerizer how to handle the stdout and stderr of the container. The container logger can modify the fields within the ContainerIO as much as necessary, with some exceptions; see the struct ContainerIO above.

The container logger should not lose stdout/stderr if the agent fails over.

containerIdThe ID of the container.
containerConfigThe configurations of the container, including the ExecutorInfo (if applied), as well as the absolute path to the sandbox directory of the container. The sandbox path is provided in case the container logger needs to store files in the container's sandbox, such as persistent state between agent failovers. NOTE: All files in the sandbox are exposed via the /files endpoint.

The documentation for this class was generated from the following file: