/** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef LIB_COMMON_LOGGING_H_ #define LIB_COMMON_LOGGING_H_ #include namespace hdfs { enum LogLevel { kDebug, kInfo, kWarning, kError, }; #define LOG_DEBUG() LogMessage(kDebug) #define LOG_INFO() LogMessage(kInfo) #define LOG_WARN() LogMessage(kWarning) #define LOG_ERROR() LogMessage(kError) class LogMessage { public: LogMessage(const LogLevel &l) { static constexpr const char * kLogLevelMessage[] = {"DEBUG", "INFO", "WARN", "ERROR"}; ::std::cerr << "[" << kLogLevelMessage[(size_t)l] << "] "; } ~LogMessage() { ::std::cerr << std::endl; } LogMessage& operator<<(const std::string& msg) { ::std::cerr << msg; return *this; } LogMessage& operator<<(int x) { ::std::cerr << x; return *this; } }; } #endif