You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

77 lines
2.1 KiB

/**
* @file Log.h
* @brief Log interfaces.
* @copyright VisionLabs LLC
* @date 20.02.2018
* */
#pragma once
#include <fsdk/Def.h>
namespace fsdk{
namespace log {
/**
* @brief Custom print function type.
* */
using PrintFunction = void (*)(int severity, const char* message);
/**
* @brief Log message severity enumeration.
* */
enum Severity
{
SV_ERROR=1, //!< Critical error.
SV_WARN, //!< Recoverable error / non-critical issue.
SV_INFO, //!< Generic information.
SV_DEBUG, //!< Extended (debugging) information (verbose).
#ifndef NDEBUG
SV_DEFAULT = SV_DEBUG //!< Default severity.
#else
SV_DEFAULT = SV_INFO //!< Default severity.
#endif
};
/**
* @brief Set print function pointer. Default function is made thread-safe with function-local mutex.
* It means that if you provide your custom print function it's your duty to make it thread safe or not thread safe.
* @param [in] function new function pointer. @see PrintFunction.
* Any exception thrown out of param function is catched, but not throwing is
* better idea still.
* */
FSDK_API void setPrintFunction(PrintFunction function) noexcept;
/**
* @brief Get print function pointer.
* @returns print function pointer. @see PrintFunction.
* */
FSDK_API PrintFunction getPrintFunction() noexcept;
/**
* @brief Get default print function pointer. Is thread-safe.
* @returns print function pointer. @see PrintFunction.
* */
FSDK_API PrintFunction getDefaultPrintFunction() noexcept;
/**
* @brief Helper function to restore default print function.
* @detais This is equivalent to:
* @code
* setPrintFunction(getDefaultPrintFunction());
* @endcode
* */
FSDK_API void restorePrintFunction() noexcept;
/**
* @brief Sets severity logging filter
* @param [in] severity desired severity filter. @see Severity.
* */
FSDK_API void setSeverityFilter(int severity) noexcept;
/** @brief Get log severity filter.
* @returns severity level. @see Severity.
*/
FSDK_API int getSeverityFilter() noexcept;
}
}