/* * Copyright (c) Meta Platforms, Inc. and affiliates. * * Licensed 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. */ #pragma once #include <folly/Likely.h> #include <atomic> #include <chrono> #include <glog/logging.h> #ifndef FB_LOG_EVERY_MS /** * Issues a LOG(severity) no more often than every * milliseconds. Example: * * FB_LOG_EVERY_MS(INFO, 10000) << "At least ten seconds passed" * " since you last saw this."; * * The implementation uses for statements to introduce variables in * a nice way that doesn't mess surrounding statements. It is thread * safe. Non-positive intervals will always log. */ #define FB_LOG_EVERY_MS(severity, milli_interval) … #endif /** * Issues a LOG(severity) once. * * FB_LOG_ONCE(ERROR) << "Log this error only once"; * * This macro is thread-safe and does not impact surrounding statements. * * NOTE: A load() is used in the fast-path scenario (steady state) in order to * avoid a locked RMW operation. */ #ifndef FB_LOG_ONCE #define FB_LOG_ONCE(severity) … #endif