/home/travis/build/open62541/open62541/include/ua_log.h
Go to the documentation of this file.
00001 /*
00002  * Copyright (C) 2014 the contributors as stated in the AUTHORS file
00003  *
00004  * This file is part of open62541. open62541 is free software: you can
00005  * redistribute it and/or modify it under the terms of the GNU Lesser General
00006  * Public License, version 3 (as published by the Free Software Foundation) with
00007  * a static linking exception as stated in the LICENSE file provided with
00008  * open62541.
00009  *
00010  * open62541 is distributed in the hope that it will be useful, but WITHOUT ANY
00011  * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
00012  * A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
00013  * details.
00014  */
00015 
00016 #ifndef UA_LOG_H_
00017 #define UA_LOG_H_
00018 
00019 #ifdef __cplusplus
00020 extern "C" {
00021 #endif
00022 
00023 #include "ua_config.h"
00024 
00035 typedef enum {
00036     UA_LOGLEVEL_TRACE,
00037     UA_LOGLEVEL_DEBUG,
00038     UA_LOGLEVEL_INFO,
00039     UA_LOGLEVEL_WARNING,
00040     UA_LOGLEVEL_ERROR,
00041     UA_LOGLEVEL_FATAL
00042 } UA_LogLevel;
00043 
00044 typedef enum {
00045     UA_LOGCATEGORY_COMMUNICATION,
00046     UA_LOGCATEGORY_SERVER,
00047     UA_LOGCATEGORY_CLIENT,
00048     UA_LOGCATEGORY_USERLAND
00049 } UA_LogCategory;
00050     
00051 typedef void (*UA_Logger)(UA_LogLevel level, UA_LogCategory category, const char *msg, ...);
00052 
00053 #if UA_LOGLEVEL <= 100
00054 #define UA_LOG_TRACE(LOGGER, CATEGORY, ...) do { \
00055         if(LOGGER) LOGGER(UA_LOGLEVEL_TRACE, CATEGORY, __VA_ARGS__); } while(0)
00056 #else
00057 #define UA_LOG_TRACE(LOGGER, CATEGORY, ...) do {} while(0)
00058 #endif
00059 
00060 #if UA_LOGLEVEL <= 200
00061 #define UA_LOG_DEBUG(LOGGER, CATEGORY, ...) do { \
00062         if(LOGGER) LOGGER(UA_LOGLEVEL_DEBUG, CATEGORY, __VA_ARGS__); } while(0)
00063 #else
00064 #define UA_LOG_DEBUG(LOGGER, CATEGORY, ...) do {} while(0)
00065 #endif
00066 
00067 #if UA_LOGLEVEL <= 300
00068 #define UA_LOG_INFO(LOGGER, CATEGORY, ...) do { \
00069         if(LOGGER) LOGGER(UA_LOGLEVEL_INFO, CATEGORY, __VA_ARGS__); } while(0)
00070 #else
00071 #define UA_LOG_INFO(LOGGER, CATEGORY, ...) do {} while(0)
00072 #endif
00073 
00074 #if UA_LOGLEVEL <= 400
00075 #define UA_LOG_WARNING(LOGGER, CATEGORY, ...) do { \
00076         if(LOGGER) LOGGER(UA_LOGLEVEL_WARNING, CATEGORY, __VA_ARGS__); } while(0)
00077 #else
00078 #define UA_LOG_WARNING(LOGGER, CATEGORY, ...) do {} while(0)
00079 #endif
00080 
00081 #if UA_LOGLEVEL <= 500
00082 #define UA_LOG_ERROR(LOGGER, CATEGORY, ...) do { \
00083         if(LOGGER) LOGGER(UA_LOGLEVEL_ERROR, CATEGORY, __VA_ARGS__); } while(0)
00084 #else
00085 #define UA_LOG_ERROR(LOGGER, CATEGORY, ...) do {} while(0)
00086 #endif
00087 
00088 #if UA_LOGLEVEL <= 600
00089 #define UA_LOG_FATAL(LOGGER, CATEGORY, ...) do { \
00090         if(LOGGER) LOGGER(UA_LOGLEVEL_FATAL, CATEGORY, __VA_ARGS__); } while(0)
00091 #else
00092 #define UA_LOG_FATAL(LOGGER, CATEGORY, ...) do {} while(0)
00093 #endif
00094 
00097 #ifdef __cplusplus
00098 } // extern "C"
00099 #endif
00100 
00101 #endif /* UA_LOG_H_ */