#ifndef __LOG_STORE_HPP__ #define __LOG_STORE_HPP__ #include #include namespace unitree { namespace common { class LogStore { public: explicit LogStore() {} virtual ~LogStore() { mWriterPtr.reset(); } virtual void Append(const std::string& s) = 0; protected: LogWriterPtr mWriterPtr; }; typedef std::shared_ptr LogStorePtr; class LogStdoutStore : public LogStore { public: explicit LogStdoutStore(); ~LogStdoutStore(); void Append(const std::string& s); }; typedef std::shared_ptr LogStdoutStorePtr; class LogStderrStore : public LogStore { public: explicit LogStderrStore(); ~LogStderrStore(); void Append(const std::string& s); }; typedef std::shared_ptr LogStderrStorePtr; class LogFileStore : public LogStore { public: explicit LogFileStore(LogKeeperPtr keeperPtr); ~LogFileStore(); void Append(const std::string& s); }; typedef std::shared_ptr LogFileStorePtr; class LogFileAsyncStore : public LogStore { public: explicit LogFileAsyncStore(LogKeeperPtr keeperPtr); ~LogFileAsyncStore(); void Append(const std::string& s); }; typedef std::shared_ptr LogFileAsyncStorePtr; } } #endif//__LOG_STORE_HPP__