| 33 | namespace slave { |
| 34 | |
| 35 | Try<ContainerLogger*> ContainerLogger::create(const Option<string>& type) |
| 36 | { |
| 37 | ContainerLogger* logger = nullptr; |
| 38 | |
| 39 | if (type.isNone()) { |
| 40 | logger = new internal::slave::SandboxContainerLogger(); |
| 41 | } else { |
| 42 | // Try to load container logger from module. |
| 43 | Try<ContainerLogger*> module = |
| 44 | modules::ModuleManager::create<ContainerLogger>(type.get()); |
| 45 | |
| 46 | if (module.isError()) { |
| 47 | return Error( |
| 48 | "Failed to create container logger module '" + type.get() + |
| 49 | "': " + module.error()); |
| 50 | } |
| 51 | |
| 52 | logger = module.get(); |
| 53 | } |
| 54 | |
| 55 | // Initialize the module. |
| 56 | Try<Nothing> initialize = logger->initialize(); |
| 57 | if (initialize.isError()) { |
| 58 | delete logger; |
| 59 | |
| 60 | return Error( |
| 61 | "Failed to initialize container logger module: " + initialize.error()); |
| 62 | } |
| 63 | |
| 64 | return logger; |
| 65 | } |
| 66 | |
| 67 | } // namespace slave { |
| 68 | } // namespace mesos { |