1 // 2 // Copyright (C) 2019 The Android Open Source Project 3 // 4 // Licensed under the Apache License, Version 2.0 (the "License"); 5 // you may not use this file except in compliance with the License. 6 // You may obtain a copy of the License at 7 // 8 // http://www.apache.org/licenses/LICENSE-2.0 9 // 10 // Unless required by applicable law or agreed to in writing, software 11 // distributed under the License is distributed on an "AS IS" BASIS, 12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 // See the License for the specific language governing permissions and 14 // limitations under the License. 15 16 #pragma once 17 18 #include <string> 19 20 #include <fruit/fruit.h> 21 22 #include "common/libs/utils/result.h" 23 #include "common/libs/utils/subprocess.h" 24 #include "host/libs/config/cuttlefish_config.h" 25 26 namespace cuttlefish { 27 28 class LogTeeCreator { 29 public: 30 INJECT(LogTeeCreator(const CuttlefishConfig::InstanceSpecific& instance)); 31 32 // Creates a log tee command for the stdout and stderr channels of the given 33 // command. 34 Result<Command> CreateFullLogTee(Command& cmd, std::string process_name); 35 36 // Creates a log tee command for specified channel of the given command. 37 Result<Command> CreateLogTee(Command& cmd, std::string process_name, 38 Subprocess::StdIOChannel log_channel); 39 40 private: 41 const CuttlefishConfig::InstanceSpecific& instance_; 42 }; 43 44 } // namespace cuttlefish 45