%-*-Mode:erlang;coding:utf-8;tab-width:4;c-basic-offset:4;indent-tabs-mode:()-*- % ex: set ft=erlang fenc=utf-8 sts=4 ts=4 sw=4 et nomod: %%% %%%------------------------------------------------------------------------ %%% %%% MIT License %%% %%% Copyright (c) 2009-2017 Michael Truog %%% %%% Permission is hereby granted, free of charge, to any person obtaining a %%% copy of this software and associated documentation files (the "Software"), %%% to deal in the Software without restriction, including without limitation %%% the rights to use, copy, modify, merge, publish, distribute, sublicense, %%% and/or sell copies of the Software, and to permit persons to whom the %%% Software is furnished to do so, subject to the following conditions: %%% %%% The above copyright notice and this permission notice shall be included in %%% all copies or substantial portions of the Software. %%% %%% THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR %%% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, %%% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE %%% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER %%% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING %%% FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER %%% DEALINGS IN THE SOFTWARE. %%% %%%------------------------------------------------------------------------ % logging levels explained: % % FATAL: indicates the system has failed and can not continue % ERROR: indicates a subsystem has failed but the failure is not fatal % WARN: indicates an unexpected occurance was found in a subsystem % INFO: indicates a subsystem has changed state % DEBUG: reports subsystem data that should be useful for debugging % TRACE: reports subsystem data that is only for tracing execution % Typical logging output which will log asynchronously until the logger's % message queue becomes too large, switching to synchronous logging % while the message queue remains large -define(LOG_FATAL(Format, Args), cloudi_core_i_logger_interface:fatal(?MODULE, ?LINE, ?FUNCTION_NAME, ?FUNCTION_ARITY, Format, Args)). -define(LOG_ERROR(Format, Args), cloudi_core_i_logger_interface:error(?MODULE, ?LINE, ?FUNCTION_NAME, ?FUNCTION_ARITY, Format, Args)). -define(LOG_WARN(Format, Args), cloudi_core_i_logger_interface:warn(?MODULE, ?LINE, ?FUNCTION_NAME, ?FUNCTION_ARITY, Format, Args)). -define(LOG_INFO(Format, Args), cloudi_core_i_logger_interface:info(?MODULE, ?LINE, ?FUNCTION_NAME, ?FUNCTION_ARITY, Format, Args)). -define(LOG_DEBUG(Format, Args), cloudi_core_i_logger_interface:debug(?MODULE, ?LINE, ?FUNCTION_NAME, ?FUNCTION_ARITY, Format, Args)). -define(LOG_TRACE(Format, Args), cloudi_core_i_logger_interface:trace(?MODULE, ?LINE, ?FUNCTION_NAME, ?FUNCTION_ARITY, Format, Args)). % Force the logging to be done synchronously to the local log only % (if you are concerned about losing a logging message when the logging % is done asynchronously while the logger's message queue is somewhat large, % or if you want to make sure the logger's message queue is flushed, % during a rapid shutdown or crash, use these macros where necessary... % they are already used for service restart/stop events with the info % logging level, so it is unlikely it would be necessary to use the macros in % custom source code, if the info logging level is enabled) -define(LOG_FATAL_SYNC(Format, Args), cloudi_core_i_logger_interface:fatal_sync(?MODULE, ?LINE, ?FUNCTION_NAME, ?FUNCTION_ARITY, Format, Args)). -define(LOG_ERROR_SYNC(Format, Args), cloudi_core_i_logger_interface:error_sync(?MODULE, ?LINE, ?FUNCTION_NAME, ?FUNCTION_ARITY, Format, Args)). -define(LOG_WARN_SYNC(Format, Args), cloudi_core_i_logger_interface:warn_sync(?MODULE, ?LINE, ?FUNCTION_NAME, ?FUNCTION_ARITY, Format, Args)). -define(LOG_INFO_SYNC(Format, Args), cloudi_core_i_logger_interface:info_sync(?MODULE, ?LINE, ?FUNCTION_NAME, ?FUNCTION_ARITY, Format, Args)). -define(LOG_DEBUG_SYNC(Format, Args), cloudi_core_i_logger_interface:debug_sync(?MODULE, ?LINE, ?FUNCTION_NAME, ?FUNCTION_ARITY, Format, Args)). -define(LOG_TRACE_SYNC(Format, Args), cloudi_core_i_logger_interface:trace_sync(?MODULE, ?LINE, ?FUNCTION_NAME, ?FUNCTION_ARITY, Format, Args)). % Apply an anonymous function if allowed by the current logging level setting -define(LOG_FATAL_APPLY(F, A), cloudi_core_i_logger_interface:fatal_apply(F, A)). -define(LOG_ERROR_APPLY(F, A), cloudi_core_i_logger_interface:error_apply(F, A)). -define(LOG_WARN_APPLY(F, A), cloudi_core_i_logger_interface:warn_apply(F, A)). -define(LOG_INFO_APPLY(F, A), cloudi_core_i_logger_interface:info_apply(F, A)). -define(LOG_DEBUG_APPLY(F, A), cloudi_core_i_logger_interface:debug_apply(F, A)). -define(LOG_TRACE_APPLY(F, A), cloudi_core_i_logger_interface:trace_apply(F, A)). % Apply a module function if allowed by the current logging level setting -define(LOG_FATAL_APPLY(M, F, A), cloudi_core_i_logger_interface:fatal_apply(M, F, A)). -define(LOG_ERROR_APPLY(M, F, A), cloudi_core_i_logger_interface:error_apply(M, F, A)). -define(LOG_WARN_APPLY(M, F, A), cloudi_core_i_logger_interface:warn_apply(M, F, A)). -define(LOG_INFO_APPLY(M, F, A), cloudi_core_i_logger_interface:info_apply(M, F, A)). -define(LOG_DEBUG_APPLY(M, F, A), cloudi_core_i_logger_interface:debug_apply(M, F, A)). -define(LOG_TRACE_APPLY(M, F, A), cloudi_core_i_logger_interface:trace_apply(M, F, A)). % Get/Set lager-compatible logging metadata -define(LOG_METADATA_GET(), cloudi_core_i_logger:metadata_get()). -define(LOG_METADATA_SET(L), cloudi_core_i_logger:metadata_set(L)).