Show elog.h syntax highlighted
/*
*
* Copyright (c) 2003 The Regents of the University of California. All
* rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* - Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* - Neither the name of the University nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS''
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
* PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
/* $Id: elog.h,v 1.12 2004/10/29 18:39:29 nithya Exp $ */
/**
* \file elog.h an "embedded logger"
* \brief elog works in conjunction with the ERun program to emit coded log
* messages
*
* Logging macros. We use these macros for a few
* reasons: one, more convenient than writing out __FUNCTION every
* time; two, if the loglevel isn't high enough, we don't even want
* the arguments to elog() to be evaluated. This is to encourage very
* verbose log messages (e.g. at a high enough loglevel, even packet
* contents might be printed), because there is no penalty for them
* when they're off.
*/
#ifndef __ELOG_H__
#define __ELOG_H__
/* loglevel constants */
#ifndef LOG_EMERG
#define LOG_EMERG 0 /**< system is unusable */
#define LOG_ALERT 1 /**< action must be taken immediately */
#define LOG_CRIT 2 /**< critical conditions */
#define LOG_ERR 3 /**< error conditions */
#define LOG_WARNING 4 /**< warning conditions */
#define LOG_NOTICE 5 /**< normal but significant condition */
#define LOG_INFO 6 /**< informational */
#endif
#define LOG_DEBUG_0 7 /**< debug */
#ifdef LOG_DEBUG
#undef LOG_DEBUG
#endif
#define LOG_OFF -1 /**< don't emit log messages */
#define LOG_UNDEFINED -2 /**< loglevel not specified */
#define LOG_DEBUG(x) ((x) + LOG_DEBUG_0) /**< debug-level messages */
/* default log levels */
#define DEFAULT_STDOUT_THRESHOLD LOG_NOTICE
#define DEFAULT_LOGRING_THRESHOLD LOG_INFO
#define DEFAULT_SYSLOG_THRESHOLD LOG_OFF
/** Name for passing loglevels through the environment */
#define EMSTAR_LOGLEVEL_ENVNAME "EMSTAR_LOGLEVEL"
/** A global variable, available in every file where elog() is used */
extern int elog_loglevel;
/* Function prototypes - utilities */
void loglevel_to_env(char *name, int level);
int loglevel_from_env(char *name, int *level);
int get_loglevel_by_name(char *loglevel, int *newlevel);
char *loglevel_name(int level);
/* This function should not be directly called by applications/services.
* In order to set the loglevel, either add -o <LOG_LEVEL> to the command
* line, or add: loglevel= in the .run file */
void elog_set_loglevel(int new_level);
/* Function prototypes - logging functions */
void elog_raw_real(int level, const void *input, int count);
void elog_real(int level, const char *function, char *fmt, ...)
__attribute__ ((format (printf, 3, 4)));
void elog_emit(char *message, int len);
#define elog(lev, args...) \
do { if (elog_loglevel>=(lev)) elog_real((lev), __FUNCTION__, args);\
} while (0)
#define elog_g(lev, args...) \
do { if (elog_loglevel>=(lev)) elog_real((lev), NULL, args);\
} while (0)
#define elog_fmt(lev, fmt, args...) \
do { if (elog_loglevel>=(lev)) elog_real((lev), __FUNCTION__, fmt, args);\
} while (0)
#define elog_raw(lev, input, count) \
do { if (elog_loglevel>=(lev)) elog_raw_real((lev),(input),(count));\
} while (0)
#endif // ELOG_H
See more files for this project here