~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to plugin/syslog/module.cc

  • Committer: Mark Atwood
  • Date: 2010-06-24 03:15:21 UTC
  • mto: (1637.2.4 build)
  • mto: This revision was merged to the branch mainline in revision 1639.
  • Revision ID: me@mark.atwood.name-20100624031521-gafmppfbf5afm68w
new syslog module, with plugins for query log, error message, and SYSLOG() function

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* -*- mode: c++; c-basic-offset: 2; indent-tabs-mode: nil; -*-
 
2
 *  vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
 
3
 *
 
4
 *  Copyright (C) 2010 Mark Atwood
 
5
 *
 
6
 *  This program is free software; you can redistribute it and/or modify
 
7
 *  it under the terms of the GNU General Public License as published by
 
8
 *  the Free Software Foundation; version 2 of the License.
 
9
 *
 
10
 *  This program 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
 
13
 *  GNU General Public License for more details.
 
14
 *
 
15
 *  You should have received a copy of the GNU General Public License
 
16
 *  along with this program; if not, write to the Free Software
 
17
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 
18
 */
 
19
 
 
20
#include "config.h"
 
21
#include "module.h"
 
22
 
 
23
#include <drizzled/plugin.h>
 
24
#include <drizzled/plugin/logging.h>
 
25
#include <drizzled/plugin/error_message.h>
 
26
#include <drizzled/plugin/function.h>
 
27
 
 
28
#include "logging.h"
 
29
#include "errmsg.h"
 
30
#include "function.h"
 
31
 
 
32
using namespace drizzled;
 
33
 
 
34
namespace syslog_module
 
35
{
 
36
 
 
37
char* sysvar_ident;
 
38
char* sysvar_facility;
 
39
bool sysvar_logging_enable;
 
40
char* sysvar_logging_priority;
 
41
unsigned long sysvar_logging_threshold_slow;
 
42
unsigned long sysvar_logging_threshold_big_resultset;
 
43
unsigned long sysvar_logging_threshold_big_examined;
 
44
bool sysvar_errmsg_enable;
 
45
char* sysvar_errmsg_priority;
 
46
 
 
47
static int init(drizzled::module::Context &context)
 
48
{
 
49
  context.add(new Logging_syslog());
 
50
  context.add(new ErrorMessage_syslog());
 
51
  context.add(new plugin::Create_function<Function_syslog>("syslog"));
 
52
  return 0;
 
53
}
 
54
 
 
55
static DRIZZLE_SYSVAR_STR(
 
56
  ident,
 
57
  sysvar_ident,
 
58
  PLUGIN_VAR_READONLY,
 
59
  N_("Syslog Ident"),
 
60
  NULL, /* check func */
 
61
  NULL, /* update func*/
 
62
  "drizzled" /* default */);
 
63
 
 
64
static DRIZZLE_SYSVAR_STR(
 
65
  facility,
 
66
  sysvar_facility,
 
67
  PLUGIN_VAR_READONLY,
 
68
  N_("Syslog Facility"),
 
69
  NULL, /* check func */
 
70
  NULL, /* update func*/
 
71
  "local0" /* default */);  // local0 is what PostGreSQL uses by default
 
72
 
 
73
static DRIZZLE_SYSVAR_BOOL(
 
74
  logging_enable,
 
75
  sysvar_logging_enable,
 
76
  PLUGIN_VAR_NOCMDARG,
 
77
  N_("Enable logging to syslog of the query log"),
 
78
  NULL, /* check func */
 
79
  NULL, /* update func */
 
80
  false /* default */);
 
81
 
 
82
static DRIZZLE_SYSVAR_STR(
 
83
  logging_priority,
 
84
  sysvar_logging_priority,
 
85
  PLUGIN_VAR_READONLY,
 
86
  N_("Syslog Priority of query logging"),
 
87
  NULL, /* check func */
 
88
  NULL, /* update func*/
 
89
  "info" /* default */);
 
90
 
 
91
static DRIZZLE_SYSVAR_ULONG(
 
92
  logging_threshold_slow,
 
93
  sysvar_logging_threshold_slow,
 
94
  PLUGIN_VAR_OPCMDARG,
 
95
  N_("Threshold for logging slow queries, in microseconds"),
 
96
  NULL, /* check func */
 
97
  NULL, /* update func */
 
98
  0, /* default */
 
99
  0, /* min */
 
100
  ULONG_MAX, /* max */
 
101
  0 /* blksiz */);
 
102
 
 
103
static DRIZZLE_SYSVAR_ULONG(
 
104
  logging_threshold_big_resultset,
 
105
  sysvar_logging_threshold_big_resultset,
 
106
  PLUGIN_VAR_OPCMDARG,
 
107
  N_("Threshold for logging big queries, for rows returned"),
 
108
  NULL, /* check func */
 
109
  NULL, /* update func */
 
110
  0, /* default */
 
111
  0, /* min */
 
112
  ULONG_MAX, /* max */
 
113
  0 /* blksiz */);
 
114
 
 
115
static DRIZZLE_SYSVAR_ULONG(
 
116
  logging_threshold_big_examined,
 
117
  sysvar_logging_threshold_big_examined,
 
118
  PLUGIN_VAR_OPCMDARG,
 
119
  N_("Threshold for logging big queries, for rows examined"),
 
120
  NULL, /* check func */
 
121
  NULL, /* update func */
 
122
  0, /* default */
 
123
  0, /* min */
 
124
  ULONG_MAX, /* max */
 
125
  0 /* blksiz */);
 
126
 
 
127
static DRIZZLE_SYSVAR_BOOL(
 
128
  errmsg_enable,
 
129
  sysvar_errmsg_enable,
 
130
  PLUGIN_VAR_NOCMDARG,
 
131
  N_("Enable logging to syslog of the error messages"),
 
132
  NULL, /* check func */
 
133
  NULL, /* update func */
 
134
  false /* default */);
 
135
 
 
136
static DRIZZLE_SYSVAR_STR(
 
137
  errmsg_priority,
 
138
  sysvar_errmsg_priority,
 
139
  PLUGIN_VAR_READONLY,
 
140
  N_("Syslog Priority of error messages"),
 
141
  NULL, /* check func */
 
142
  NULL, /* update func*/
 
143
  "warning" /* default */);
 
144
 
 
145
static drizzle_sys_var* system_variables[]= {
 
146
  DRIZZLE_SYSVAR(ident),
 
147
  DRIZZLE_SYSVAR(facility),
 
148
  DRIZZLE_SYSVAR(logging_enable),
 
149
  DRIZZLE_SYSVAR(logging_priority),
 
150
  DRIZZLE_SYSVAR(logging_threshold_slow),
 
151
  DRIZZLE_SYSVAR(logging_threshold_big_resultset),
 
152
  DRIZZLE_SYSVAR(logging_threshold_big_examined),
 
153
  DRIZZLE_SYSVAR(errmsg_enable),
 
154
  DRIZZLE_SYSVAR(errmsg_priority),
 
155
  NULL
 
156
};
 
157
 
 
158
} // namespace syslog_module
 
159
 
 
160
DRIZZLE_PLUGIN(syslog_module::init, syslog_module::system_variables);