%PDF- %PDF-
| Direktori : /proc/thread-self/root/backups/router/usr/local/include/syslog-ng/ |
| Current File : //proc/thread-self/root/backups/router/usr/local/include/syslog-ng/messages.h |
/*
* Copyright (c) 2002-2012 Balabit
* Copyright (c) 1998-2012 Balázs Scheidler
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library 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
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*
* As an additional exemption you are allowed to compile & link against the
* OpenSSL libraries as published by the OpenSSL project. See the file
* COPYING for details.
*
*/
#ifndef MESSAGES_H_INCLUDED
#define MESSAGES_H_INCLUDED
#include "syslog-ng.h"
#include <errno.h>
#include <evtlog.h>
extern int startup_debug_flag;
extern int debug_flag;
extern int verbose_flag;
extern int trace_flag;
extern int log_stderr;
typedef void (*MsgPostFunc)(LogMessage *msg);
void msg_set_context(LogMessage *msg);
EVTREC *msg_event_create(gint prio, const char *desc, EVTTAG *tag1, ...) __attribute__((nonnull(2)));
EVTREC *msg_event_create_from_desc(gint prio, const char *desc);
void msg_event_free(EVTREC *e);
void msg_event_send(EVTREC *e);
void msg_event_suppress_recursions_and_send(EVTREC *e);
void msg_event_print_event_to_stderr(EVTREC *e);
void msg_set_post_func(MsgPostFunc func);
gint msg_map_string_to_log_level(const gchar *log_level);
void msg_set_log_level(gint new_log_level);
gint msg_get_log_level(void);
void msg_apply_cmdline_log_level(gint new_log_level);
void msg_apply_config_log_level(gint new_log_level);
void msg_init(gboolean interactive);
void msg_deinit(void);
void msg_add_option_group(GOptionContext *ctx);
#define evt_tag_error(tag) evt_tag_errno(tag, __local_copy_of_errno)
#define CAPTURE_ERRNO(lambda) do {\
int __local_copy_of_errno G_GNUC_UNUSED = errno; \
lambda; \
} while(0)
/* fatal->warning goes out to the console during startup, notice and below
* comes goes to the log even during startup */
#define msg_fatal(desc, tags...) CAPTURE_ERRNO(\
msg_event_suppress_recursions_and_send(msg_event_create(EVT_PRI_CRIT, desc, ##tags, NULL )))
#define msg_error(desc, tags...) CAPTURE_ERRNO(\
msg_event_suppress_recursions_and_send(msg_event_create(EVT_PRI_ERR, desc, ##tags, NULL )))
#define msg_warning(desc, tags...) CAPTURE_ERRNO(\
msg_event_suppress_recursions_and_send(msg_event_create(EVT_PRI_WARNING, desc, ##tags, NULL )))
#define msg_notice(desc, tags...) CAPTURE_ERRNO(\
msg_event_suppress_recursions_and_send(msg_event_create(EVT_PRI_NOTICE, desc, ##tags, NULL )))
#define msg_info(desc, tags...) CAPTURE_ERRNO(\
msg_event_suppress_recursions_and_send(msg_event_create(EVT_PRI_INFO, desc, ##tags, NULL )))
/* just like msg_info, but prepends the message with a timestamp -- useful in interactive
* tools with long running time to provide some feedback */
#define msg_progress(desc, tags...) \
do { \
time_t t; \
char *timestamp, *newdesc; \
\
t = time(0); \
timestamp = ctime(&t); \
timestamp[strlen(timestamp) - 1] = 0; \
newdesc = g_strdup_printf("[%s] %s", timestamp, desc); \
msg_event_send(msg_event_create(EVT_PRI_INFO, newdesc, ##tags, NULL )); \
g_free(newdesc); \
} while (0)
#define msg_verbose(desc, tags...) \
do { \
if (G_UNLIKELY(verbose_flag)) \
msg_info(desc, ##tags ); \
} while (0)
#define msg_debug(desc, tags...) \
do { \
if (G_UNLIKELY(debug_flag)) \
msg_event_suppress_recursions_and_send( \
msg_event_create(EVT_PRI_DEBUG, desc, ##tags, NULL )); \
} while (0)
#define msg_trace(desc, tags...) \
do { \
if (G_UNLIKELY(trace_flag)) \
msg_event_suppress_recursions_and_send( \
msg_event_create(EVT_PRI_DEBUG, desc, ##tags, NULL )); \
} while (0)
#define msg_trace_printf(fmt, values...) \
do { \
if (G_UNLIKELY(trace_flag)) \
msg_send_message_printf(EVT_PRI_DEBUG, fmt, ##values); \
} while (0)
#define msg_diagnostics(desc, tags...) \
do { \
if (G_UNLIKELY(trace_flag)) \
msg_event_print_event_to_stderr( \
msg_event_create(EVT_PRI_DEBUG, desc, ##tags, NULL )); \
} while (0)
#define __once() \
({ \
static gboolean __guard = TRUE; \
gboolean __current_guard = __guard; \
__guard = FALSE; \
__current_guard; \
})
#define msg_warning_once(desc, tags...) \
do { \
if (__once()) \
msg_warning(desc, ##tags ); \
} while (0)
void msg_post_message(LogMessage *msg);
void msg_send_formatted_message(int prio, const char *msg);
void msg_send_message_printf(int prio, const gchar *fmt, ...) G_GNUC_PRINTF(2, 3);
#endif