~drizzle-trunk/drizzle/development

1637.3.1 by Mark Atwood
new syslog module, with plugins for query log, error message, and SYSLOG() function
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
2173.2.1 by Monty Taylor
Fixes incorrect usage of include
20
#include <config.h>
1637.3.1 by Mark Atwood
new syslog module, with plugins for query log, error message, and SYSLOG() function
21
22
#include <drizzled/plugin.h>
23
#include <drizzled/plugin/logging.h>
24
#include <drizzled/plugin/error_message.h>
25
#include <drizzled/plugin/function.h>
26
1964.2.7 by Monty Taylor
Refactored syslog module and changed it to use sys_var directly.
27
#include "wrap.h"
1637.3.1 by Mark Atwood
new syslog module, with plugins for query log, error message, and SYSLOG() function
28
#include "logging.h"
29
#include "errmsg.h"
30
#include "function.h"
1684.3.1 by Vijay Samuel
Merge re factored commandline for syslog
31
#include <iostream>
32
#include <boost/program_options.hpp>
33
#include <drizzled/module/option_map.h>
1637.3.1 by Mark Atwood
new syslog module, with plugins for query log, error message, and SYSLOG() function
34
1684.3.1 by Vijay Samuel
Merge re factored commandline for syslog
35
namespace po= boost::program_options;
36
using namespace std;
1637.3.1 by Mark Atwood
new syslog module, with plugins for query log, error message, and SYSLOG() function
37
using namespace drizzled;
38
1964.2.7 by Monty Taylor
Refactored syslog module and changed it to use sys_var directly.
39
namespace drizzle_plugin
1637.3.1 by Mark Atwood
new syslog module, with plugins for query log, error message, and SYSLOG() function
40
{
41
1964.2.7 by Monty Taylor
Refactored syslog module and changed it to use sys_var directly.
42
bool sysvar_logging_enable= false;
43
bool sysvar_errmsg_enable= false;
44
45
uint64_constraint sysvar_logging_threshold_slow;
46
uint64_constraint sysvar_logging_threshold_big_resultset;
47
uint64_constraint sysvar_logging_threshold_big_examined;
1637.3.1 by Mark Atwood
new syslog module, with plugins for query log, error message, and SYSLOG() function
48
1666.4.19 by Monty Taylor
Free strdup'd option strings.
49
1637.3.1 by Mark Atwood
new syslog module, with plugins for query log, error message, and SYSLOG() function
50
static int init(drizzled::module::Context &context)
51
{
1684.3.1 by Vijay Samuel
Merge re factored commandline for syslog
52
  const module::option_map &vm= context.getOptions();
53
1964.2.7 by Monty Taylor
Refactored syslog module and changed it to use sys_var directly.
54
  WrapSyslog::singleton().openlog(vm["ident"].as<string>());
55
  if (sysvar_errmsg_enable)
56
  {
57
    context.add(new error_message::Syslog(vm["facility"].as<string>(),
58
                                          vm["errmsg-priority"].as<string>()));
59
  }
60
  if (sysvar_logging_enable)
61
  {
62
    context.add(new logging::Syslog(vm["facility"].as<string>(),
63
                                    vm["logging-priority"].as<string>(),
64
                                    sysvar_logging_threshold_slow.get(),
65
                                    sysvar_logging_threshold_big_resultset.get(),
66
                                    sysvar_logging_threshold_big_examined.get()));
67
  }
68
  context.add(new plugin::Create_function<udf::Syslog>("syslog"));
69
70
  context.registerVariable(new sys_var_const_string_val("facility",
71
                                                        vm["facility"].as<string>()));
72
  context.registerVariable(new sys_var_const_string_val("errmsg_priority",
73
                                                        vm["errmsg-priority"].as<string>()));
74
  context.registerVariable(new sys_var_const_string_val("logging_priority",
75
                                                        vm["logging-priority"].as<string>()));
76
  context.registerVariable(new sys_var_bool_ptr_readonly("logging_enable",
77
                                                         &sysvar_logging_enable));
78
  context.registerVariable(new sys_var_bool_ptr_readonly("errmsg_enable",
79
                                                         &sysvar_errmsg_enable));
80
  context.registerVariable(new sys_var_constrained_value_readonly<uint64_t>("logging_threshold_slow",
81
                                                                            sysvar_logging_threshold_slow));
82
  context.registerVariable(new sys_var_constrained_value_readonly<uint64_t>("logging_threshold_big_resultset",
83
                                                                            sysvar_logging_threshold_big_resultset));
84
  context.registerVariable(new sys_var_constrained_value_readonly<uint64_t>("logging_threshold_big_examined",
85
                                                                            sysvar_logging_threshold_big_examined));
86
1637.3.1 by Mark Atwood
new syslog module, with plugins for query log, error message, and SYSLOG() function
87
  return 0;
88
}
89
90
1684.3.1 by Vijay Samuel
Merge re factored commandline for syslog
91
static void init_options(drizzled::module::option_context &context)
92
{
93
  context("ident",
1964.2.7 by Monty Taylor
Refactored syslog module and changed it to use sys_var directly.
94
          po::value<string>()->default_value("drizzled"),
2068.4.1 by Andrew Hutchings
Fix intl domain
95
          _("Syslog Ident"));
1684.3.1 by Vijay Samuel
Merge re factored commandline for syslog
96
  context("facility",
1964.2.7 by Monty Taylor
Refactored syslog module and changed it to use sys_var directly.
97
          po::value<string>()->default_value("local0"),
2068.4.1 by Andrew Hutchings
Fix intl domain
98
          _("Syslog Facility"));
1684.3.1 by Vijay Samuel
Merge re factored commandline for syslog
99
  context("logging-enable",
100
          po::value<bool>(&sysvar_logging_enable)->default_value(false)->zero_tokens(),
2068.4.1 by Andrew Hutchings
Fix intl domain
101
          _("Enable logging to syslog of the query log"));
1684.3.1 by Vijay Samuel
Merge re factored commandline for syslog
102
  context("logging-priority",
1964.2.9 by Monty Taylor
All protocol stuff except for the buffer_length. WTF?
103
          po::value<string>()->default_value("warning"),
2068.4.1 by Andrew Hutchings
Fix intl domain
104
          _("Syslog Priority of query logging"));
1684.3.1 by Vijay Samuel
Merge re factored commandline for syslog
105
  context("logging-threshold-slow",
1964.2.7 by Monty Taylor
Refactored syslog module and changed it to use sys_var directly.
106
          po::value<uint64_constraint>(&sysvar_logging_threshold_slow)->default_value(0),
2068.4.1 by Andrew Hutchings
Fix intl domain
107
          _("Threshold for logging slow queries, in microseconds"));
1684.3.1 by Vijay Samuel
Merge re factored commandline for syslog
108
  context("logging-threshold-big-resultset",
1964.2.7 by Monty Taylor
Refactored syslog module and changed it to use sys_var directly.
109
          po::value<uint64_constraint>(&sysvar_logging_threshold_big_resultset)->default_value(0),
2068.4.1 by Andrew Hutchings
Fix intl domain
110
          _("Threshold for logging big queries, for rows returned"));
1684.3.1 by Vijay Samuel
Merge re factored commandline for syslog
111
  context("logging-threshold-big-examined",
1964.2.7 by Monty Taylor
Refactored syslog module and changed it to use sys_var directly.
112
          po::value<uint64_constraint>(&sysvar_logging_threshold_big_examined)->default_value(0),
2068.4.1 by Andrew Hutchings
Fix intl domain
113
          _("Threshold for logging big queries, for rows examined"));
1684.3.1 by Vijay Samuel
Merge re factored commandline for syslog
114
  context("errmsg-enable",
115
          po::value<bool>(&sysvar_errmsg_enable)->default_value(false)->zero_tokens(),
2068.4.1 by Andrew Hutchings
Fix intl domain
116
          _("Enable logging to syslog of the error messages"));
1684.3.1 by Vijay Samuel
Merge re factored commandline for syslog
117
  context("errmsg-priority",
1964.2.7 by Monty Taylor
Refactored syslog module and changed it to use sys_var directly.
118
          po::value<string>()->default_value("warning"),
2068.4.1 by Andrew Hutchings
Fix intl domain
119
          _("Syslog Priority of error messages"));
1684.3.1 by Vijay Samuel
Merge re factored commandline for syslog
120
}
121
1964.2.7 by Monty Taylor
Refactored syslog module and changed it to use sys_var directly.
122
} /* namespace drizzle_plugin */
123
124
DRIZZLE_PLUGIN(drizzle_plugin::init, NULL, drizzle_plugin::init_options);