22 #include <drizzled/plugin.h>
23 #include <drizzled/plugin/logging.h>
24 #include <drizzled/plugin/error_message.h>
25 #include <drizzled/plugin/function.h>
27 #include <plugin/syslog/wrap.h>
28 #include <plugin/syslog/logging.h>
29 #include <plugin/syslog/errmsg.h>
30 #include <plugin/syslog/function.h>
32 #include <boost/program_options.hpp>
35 namespace po= boost::program_options;
37 using namespace drizzled;
39 namespace drizzle_plugin
42 static bool sysvar_logging_enable=
false;
43 static bool sysvar_errmsg_enable=
true;
54 WrapSyslog::singleton().openlog(vm[
"ident"].as<string>());
55 if (sysvar_errmsg_enable)
57 context.add(
new error_message::Syslog(vm[
"facility"].as<string>()));
60 if (sysvar_logging_enable)
62 context.add(
new logging::Syslog(vm[
"facility"].as<string>(),
63 sysvar_logging_threshold_slow.get(),
64 sysvar_logging_threshold_big_resultset.get(),
65 sysvar_logging_threshold_big_examined.get()));
68 context.add(
new plugin::Create_function<udf::Syslog>(
"syslog"));
71 vm[
"facility"].as<string>()));
73 vm[
"errmsg-priority"].as<string>()));
75 vm[
"logging-priority"].as<string>()));
77 &sysvar_logging_enable));
79 &sysvar_errmsg_enable));
81 sysvar_logging_threshold_slow));
83 sysvar_logging_threshold_big_resultset));
85 sysvar_logging_threshold_big_examined));
94 po::value<string>()->default_value(
"drizzled"),
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(
true)->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"));
124 DRIZZLE_DECLARE_PLUGIN
130 N_(
"Logs error messages and queries to syslog"),
132 drizzle_plugin::init,
134 drizzle_plugin::init_options
136 DRIZZLE_DECLARE_PLUGIN_END;