syslog-ng source
logwriter.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2002-2012 Balabit
3  * Copyright (c) 1998-2012 Balázs Scheidler
4  *
5  * This library is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU Lesser General Public
7  * License as published by the Free Software Foundation; either
8  * version 2.1 of the License, or (at your option) any later version.
9  *
10  * This library is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13  * Lesser General Public License for more details.
14  *
15  * You should have received a copy of the GNU Lesser General Public
16  * License along with this library; if not, write to the Free Software
17  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
18  *
19  * As an additional exemption you are allowed to compile & link against the
20  * OpenSSL libraries as published by the OpenSSL project. See the file
21  * COPYING for details.
22  *
23  */
24 
25 #ifndef LOG_WRITER_H_INCLUDED
26 #define LOG_WRITER_H_INCLUDED
27 
28 #include "logpipe.h"
29 #include "template/templates.h"
30 #include "logqueue.h"
33 
34 /* writer constructor flags */
35 #define LW_FORMAT_FILE 0x0001
36 #define LW_FORMAT_PROTO 0x0002
37 #define LW_SYSLOG_PROTOCOL 0x0004
38 #define LW_SOFT_FLOW_CONTROL 0x0008
39 
40 /* writer options (set by the user) */
41 #define LWO_SYSLOG_PROTOCOL 0x0001
42 #define LWO_NO_MULTI_LINE 0x0002
43 /* we don't want to have a dropped counter for this writer */
44 #define LWO_NO_STATS 0x0004
45 #define LWO_THREADED 0x0010
46 #define LWO_IGNORE_ERRORS 0x0020
47 #define LWO_SEQNUM_ALL 0x0040
48 #define LWO_SEQNUM 0x0080
49 
50 typedef struct _LogWriterOptions
51 {
52  gboolean initialized;
53  /* bitmask of LWO_* */
54  guint32 options;
55 
56  /* minimum number of entries to trigger a flush */
58 
59  LogTemplate *template;
60  LogTemplate *file_template;
61  LogTemplate *proto_template;
62 
63  LogTemplateOptions template_options;
66 
68  gint suppress;
69  gint padding;
70  gint mark_mode;
71  gint mark_freq;
76 
77 typedef struct _LogWriter LogWriter;
78 
79 void log_writer_set_flags(LogWriter *self, guint32 flags);
80 guint32 log_writer_get_flags(LogWriter *self);
81 void log_writer_set_options(LogWriter *self, LogPipe *control, LogWriterOptions *options, const gchar *stats_id,
82  StatsClusterKeyBuilder *kb);
83 void log_writer_format_log(LogWriter *self, LogMessage *lm, GString *result);
84 gboolean log_writer_has_pending_writes(LogWriter *self);
85 gboolean log_writer_opened(LogWriter *self);
86 void log_writer_reopen(LogWriter *self, LogProtoClient *proto);
87 LogProtoClient *log_writer_steal_proto(LogWriter *self);
88 LogProtoClient *log_writer_get_proto(LogWriter *self);
89 void log_writer_set_queue(LogWriter *self, LogQueue *queue);
90 LogQueue *log_writer_get_queue(LogWriter *s);
91 LogWriter *log_writer_new(guint32 flags, GlobalConfig *cfg);
92 void log_writer_msg_rewind(LogWriter *self);
93 
96 void log_writer_options_init(LogWriterOptions *options, GlobalConfig *cfg, guint32 option_flags);
98 void log_writer_options_set_mark_mode(LogWriterOptions *options, const gchar *mark_mode);
99 gboolean log_writer_options_process_flag(LogWriterOptions *options, const gchar *flag);
100 
101 #endif
void log_writer_set_options(LogWriter *self, LogPipe *control, LogWriterOptions *options, const gchar *stats_id, StatsClusterKeyBuilder *kb)
void log_writer_set_flags(LogWriter *self, guint32 flags)
gboolean log_writer_opened(LogWriter *self)
void log_writer_reopen(LogWriter *self, LogProtoClient *proto)
void log_writer_options_set_template_escape(LogWriterOptions *options, gboolean enable)
void log_writer_options_defaults(LogWriterOptions *options)
void log_writer_msg_rewind(LogWriter *self)
LogWriter * log_writer_new(guint32 flags, GlobalConfig *cfg)
void log_writer_format_log(LogWriter *self, LogMessage *lm, GString *result)
guint32 log_writer_get_flags(LogWriter *self)
void log_writer_options_set_mark_mode(LogWriterOptions *options, const gchar *mark_mode)
gboolean log_writer_has_pending_writes(LogWriter *self)
void log_writer_set_queue(LogWriter *self, LogQueue *queue)
LogProtoClient * log_writer_steal_proto(LogWriter *self)
LogProtoClient * log_writer_get_proto(LogWriter *self)
LogQueue * log_writer_get_queue(LogWriter *s)
void log_writer_options_init(LogWriterOptions *options, GlobalConfig *cfg, guint32 option_flags)
gboolean log_writer_options_process_flag(LogWriterOptions *options, const gchar *flag)
void log_writer_options_destroy(LogWriterOptions *options)
Definition: host-resolve.h:30
Definition: logwriter.h:51
gint truncate_size
Definition: logwriter.h:74
LogTemplate * file_template
Definition: logwriter.h:60
gint padding
Definition: logwriter.h:69
LogProtoClientOptionsStorage proto_options
Definition: logwriter.h:65
gint mark_freq
Definition: logwriter.h:71
gint stats_source
Definition: logwriter.h:73
gint mark_mode
Definition: logwriter.h:70
gint flush_lines
Definition: logwriter.h:57
guint32 options
Definition: logwriter.h:54
gint suppress
Definition: logwriter.h:68
LogTemplateOptions template_options
Definition: logwriter.h:63
gboolean initialized
Definition: logwriter.h:52
LogTemplate * proto_template
Definition: logwriter.h:61
gint time_reopen
Definition: logwriter.h:67
gint stats_level
Definition: logwriter.h:72
HostResolveOptions host_resolve_options
Definition: logwriter.h:64
Definition: logwriter.c:66
GlobalConfig * cfg
Definition: test_batched_ack_tracker.c:34
GString * result
Definition: test_lexer_block.c:34
Definition: logproto-client.h:42