~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to plugin/syslog/module.cc

  • Committer: Jay Pipes
  • Date: 2009-09-15 21:01:42 UTC
  • mto: (1126.2.5 merge)
  • mto: This revision was merged to the branch mainline in revision 1128.
  • Revision ID: jpipes@serialcoder-20090915210142-x8mwiqn1q0vzjspp
Moves Alter_info out into its own header and source file, cleans up some related include mess in sql_lex.h, and renames Alter_info to AlterInfo.

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
 
 
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
 
 
27
 
#include "wrap.h"
28
 
#include "logging.h"
29
 
#include "errmsg.h"
30
 
#include "function.h"
31
 
#include <iostream>
32
 
#include <boost/program_options.hpp>
33
 
#include <drizzled/module/option_map.h>
34
 
 
35
 
namespace po= boost::program_options;
36
 
using namespace std;
37
 
using namespace drizzled;
38
 
 
39
 
namespace drizzle_plugin
40
 
{
41
 
 
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;
48
 
 
49
 
 
50
 
static int init(drizzled::module::Context &context)
51
 
{
52
 
  const module::option_map &vm= context.getOptions();
53
 
 
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
 
 
87
 
  return 0;
88
 
}
89
 
 
90
 
 
91
 
static void init_options(drizzled::module::option_context &context)
92
 
{
93
 
  context("ident",
94
 
          po::value<string>()->default_value("drizzled"),
95
 
          _("Syslog Ident"));
96
 
  context("facility",
97
 
          po::value<string>()->default_value("local0"),
98
 
          _("Syslog Facility"));
99
 
  context("logging-enable",
100
 
          po::value<bool>(&sysvar_logging_enable)->default_value(false)->zero_tokens(),
101
 
          _("Enable logging to syslog of the query log"));
102
 
  context("logging-priority",
103
 
          po::value<string>()->default_value("warning"),
104
 
          _("Syslog Priority of query logging"));
105
 
  context("logging-threshold-slow",
106
 
          po::value<uint64_constraint>(&sysvar_logging_threshold_slow)->default_value(0),
107
 
          _("Threshold for logging slow queries, in microseconds"));
108
 
  context("logging-threshold-big-resultset",
109
 
          po::value<uint64_constraint>(&sysvar_logging_threshold_big_resultset)->default_value(0),
110
 
          _("Threshold for logging big queries, for rows returned"));
111
 
  context("logging-threshold-big-examined",
112
 
          po::value<uint64_constraint>(&sysvar_logging_threshold_big_examined)->default_value(0),
113
 
          _("Threshold for logging big queries, for rows examined"));
114
 
  context("errmsg-enable",
115
 
          po::value<bool>(&sysvar_errmsg_enable)->default_value(false)->zero_tokens(),
116
 
          _("Enable logging to syslog of the error messages"));
117
 
  context("errmsg-priority",
118
 
          po::value<string>()->default_value("warning"),
119
 
          _("Syslog Priority of error messages"));
120
 
}
121
 
 
122
 
} /* namespace drizzle_plugin */
123
 
 
124
 
DRIZZLE_PLUGIN(drizzle_plugin::init, NULL, drizzle_plugin::init_options);