/usr/include/nih/logging.h is in libnih-dev 1.0.3-4ubuntu25.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 | /* libnih
*
* Copyright © 2009 Scott James Remnant <scott@netsplit.com>.
* Copyright © 2009 Canonical Ltd.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2, as
* published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
#ifndef NIH_LOGGING_H
#define NIH_LOGGING_H
/**
* These functions provide a logging interface for outputting messages
* at different priorities, and filtering based on them.
*
* The output for the logger can be selected using nih_log_set_logger(),
* where nih_logger_printf() is the default and nih_logger_syslog() another
* popular alternative.
*
* Log messages are output with different macros.
**/
#include <stdlib.h>
#include <nih/macros.h>
/**
* NihLogLevel:
*
* Severity of log messages, used both to influence formatting of the
* message and to filter messages below a particular severity.
**/
typedef enum {
NIH_LOG_UNKNOWN,
NIH_LOG_DEBUG,
NIH_LOG_INFO,
NIH_LOG_MESSAGE,
NIH_LOG_WARN,
NIH_LOG_ERROR,
NIH_LOG_FATAL
} NihLogLevel;
/**
* NihLogger:
* @priority: priority of message,
* @message: message to log.
*
* A logger is a function that receives a formatted message to be logged
* in whatever manner is appropriate. The priority of the message is given
* so that the logger may direct it appropriately, however the function
* should not discard any messages and instead nih_log_set_priority() used
* to decide the treshold of logged messages.
*
* Returns: zero on success, negative value if the logger was not able
* to output the message.
**/
typedef int (*NihLogger) (NihLogLevel priority, const char *message);
/**
* nih_debug:
* @format: printf-style format string.
*
* Outputs a debugging message, including the name of the function that
* generated it. Almost never shown, except when debugging information is
* required.
**/
#define nih_debug(format, ...) \
nih_log_message (NIH_LOG_DEBUG, "%s: " format, \
__FUNCTION__, ##__VA_ARGS__)
/**
* nih_info:
* @format: printf-style format string.
*
* Outputs a message that is purely informational, usually not shown unless
* the user wants verbose operation.
**/
#define nih_info(format, ...) \
nih_log_message (NIH_LOG_INFO, format, ##__VA_ARGS__)
/**
* nih_message:
* @format: printf-style format string.
*
* Outputs a message from a non-daemon process that is normally shown unless
* the user wants quiet operation. The difference between this and nih_warn()
* is that this is usually send to standard output, instead of standard
* error, and it is not prefixed.
**/
#define nih_message(format, ...) \
nih_log_message (NIH_LOG_MESSAGE, format, ##__VA_ARGS__)
/**
* nih_warn:
* @format: printf-style format string.
*
* Outputs a warning message, one that indicates a potential problem that
* has been ignored; these are shown by default unless the user wants quiet
* operation.
**/
#define nih_warn(format, ...) \
nih_log_message (NIH_LOG_WARN, format, ##__VA_ARGS__)
/**
* nih_error:
* @format: printf-style format string.
*
* Outputs an error message, one that the software may be able to recover
* from but that has caused an operation to fail. These are shown in all
* but the most quiet of operation modes.
**/
#define nih_error(format, ...) \
nih_log_message (NIH_LOG_ERROR, format, ##__VA_ARGS__)
/**
* nih_fatal:
* @format: printf-style format string.
*
* Outputs a fatal error message that caused the software to cease
* functioning. Always shown.
**/
#define nih_fatal(format, ...) \
nih_log_message (NIH_LOG_FATAL, format, ##__VA_ARGS__)
/**
* nih_assert:
* @expr: expression to check.
*
* Outputs a fatal error message and terminates the process if @expr is
* false.
**/
#define nih_assert(expr) \
if (! NIH_LIKELY(expr)) { \
nih_fatal ("%s:%d: Assertion failed in %s: %s", \
__FILE__, __LINE__, __FUNCTION__, #expr); \
abort (); \
}
/**
* nih_assert_not_reached:
*
* Outputs a fatal error message and terminates the process if this
* line of code is reached.
**/
#define nih_assert_not_reached() \
do { \
nih_fatal ("%s:%d: Not reached assertion failed in %s", \
__FILE__, __LINE__, __FUNCTION__); \
abort (); \
} while (0)
NIH_BEGIN_EXTERN
extern NihLogLevel nih_log_priority;
void nih_log_init (void);
void nih_log_set_logger (NihLogger new_logger);
void nih_log_set_priority (NihLogLevel new_priority);
int nih_log_message (NihLogLevel priority, const char *format, ...)
__attribute__ ((format (printf, 2, 3)));
int nih_logger_printf (NihLogLevel priority, const char *message);
int nih_logger_syslog (NihLogLevel priority, const char *message);
NIH_END_EXTERN
#endif /* NIH_LOGGING_H */
|