Merge lp:~ansharyan015/drizzle/syslog_dynamic into lp:drizzle
- syslog_dynamic
- Merge into 7.2
Proposed by
Daniel Nichter
Status: | Merged |
---|---|
Approved by: | Brian Aker |
Approved revision: | 2569 |
Merged at revision: | 2579 |
Proposed branch: | lp:~ansharyan015/drizzle/syslog_dynamic |
Merge into: | lp:drizzle |
Diff against target: |
356 lines (+101/-45) 9 files modified
plugin/syslog/errmsg.cc (+3/-2) plugin/syslog/errmsg.h (+4/-4) plugin/syslog/function.cc (+3/-2) plugin/syslog/function.h (+2/-0) plugin/syslog/logging.cc (+32/-3) plugin/syslog/logging.h (+18/-11) plugin/syslog/module.cc (+35/-23) plugin/syslog/wrap.cc (+2/-0) plugin/syslog/wrap.h (+2/-0) |
To merge this branch: | bzr merge lp:~ansharyan015/drizzle/syslog_dynamic |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Daniel Nichter (community) | code review | Approve | |
Drizzle Merge Team | Pending | ||
Review via email: mp+114036@code.launchpad.net |
Commit message
Description of the change
To post a comment you must log in.
Revision history for this message
Daniel Nichter (daniel-nichter) : | # |
review:
Approve
(code review)
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file 'plugin/syslog/errmsg.cc' | |||
2 | --- plugin/syslog/errmsg.cc 2012-01-16 02:37:54 +0000 | |||
3 | +++ plugin/syslog/errmsg.cc 2012-08-06 11:30:29 +0000 | |||
4 | @@ -27,8 +27,8 @@ | |||
5 | 27 | #include <plugin/syslog/errmsg.h> | 27 | #include <plugin/syslog/errmsg.h> |
6 | 28 | #include <plugin/syslog/wrap.h> | 28 | #include <plugin/syslog/wrap.h> |
7 | 29 | 29 | ||
10 | 30 | namespace drizzle_plugin | 30 | namespace drizzle_plugin { |
11 | 31 | { | 31 | namespace syslog { |
12 | 32 | 32 | ||
13 | 33 | error_message::Syslog::Syslog(const std::string& facility) : | 33 | error_message::Syslog::Syslog(const std::string& facility) : |
14 | 34 | drizzled::plugin::ErrorMessage("syslog_error_message"), | 34 | drizzled::plugin::ErrorMessage("syslog_error_message"), |
15 | @@ -49,4 +49,5 @@ | |||
16 | 49 | return false; | 49 | return false; |
17 | 50 | } | 50 | } |
18 | 51 | 51 | ||
19 | 52 | } /* namespace syslog */ | ||
20 | 52 | } /* namespace drizzle_plugin */ | 53 | } /* namespace drizzle_plugin */ |
21 | 53 | 54 | ||
22 | === modified file 'plugin/syslog/errmsg.h' | |||
23 | --- plugin/syslog/errmsg.h 2011-10-20 02:45:57 +0000 | |||
24 | +++ plugin/syslog/errmsg.h 2012-08-06 11:30:29 +0000 | |||
25 | @@ -22,10 +22,9 @@ | |||
26 | 22 | #include <stdarg.h> | 22 | #include <stdarg.h> |
27 | 23 | #include <drizzled/plugin/error_message.h> | 23 | #include <drizzled/plugin/error_message.h> |
28 | 24 | 24 | ||
33 | 25 | namespace drizzle_plugin | 25 | namespace drizzle_plugin { |
34 | 26 | { | 26 | namespace syslog { |
35 | 27 | namespace error_message | 27 | namespace error_message { |
32 | 28 | { | ||
36 | 29 | 28 | ||
37 | 30 | class Syslog : public drizzled::plugin::ErrorMessage | 29 | class Syslog : public drizzled::plugin::ErrorMessage |
38 | 31 | { | 30 | { |
39 | @@ -38,6 +37,7 @@ | |||
40 | 38 | virtual bool errmsg(drizzled::error::priority_t, const char *format, va_list ap); | 37 | virtual bool errmsg(drizzled::error::priority_t, const char *format, va_list ap); |
41 | 39 | }; | 38 | }; |
42 | 40 | 39 | ||
43 | 40 | } /* namespace syslog */ | ||
44 | 41 | } /* namespace error_message */ | 41 | } /* namespace error_message */ |
45 | 42 | } /* namespace drizzle_plugin */ | 42 | } /* namespace drizzle_plugin */ |
46 | 43 | 43 | ||
47 | 44 | 44 | ||
48 | === modified file 'plugin/syslog/function.cc' | |||
49 | --- plugin/syslog/function.cc 2011-10-20 02:45:57 +0000 | |||
50 | +++ plugin/syslog/function.cc 2012-08-06 11:30:29 +0000 | |||
51 | @@ -25,8 +25,8 @@ | |||
52 | 25 | #include <plugin/syslog/function.h> | 25 | #include <plugin/syslog/function.h> |
53 | 26 | #include <plugin/syslog/wrap.h> | 26 | #include <plugin/syslog/wrap.h> |
54 | 27 | 27 | ||
57 | 28 | namespace drizzle_plugin | 28 | namespace drizzle_plugin { |
58 | 29 | { | 29 | namespace syslog { |
59 | 30 | 30 | ||
60 | 31 | udf::Syslog::Syslog() | 31 | udf::Syslog::Syslog() |
61 | 32 | : Item_str_func() | 32 | : Item_str_func() |
62 | @@ -73,4 +73,5 @@ | |||
63 | 73 | return (n == 3); | 73 | return (n == 3); |
64 | 74 | } | 74 | } |
65 | 75 | 75 | ||
66 | 76 | } /* namespace syslog */ | ||
67 | 76 | } /* namespace drizzle_plugin */ | 77 | } /* namespace drizzle_plugin */ |
68 | 77 | 78 | ||
69 | === modified file 'plugin/syslog/function.h' | |||
70 | --- plugin/syslog/function.h 2011-08-14 17:13:26 +0000 | |||
71 | +++ plugin/syslog/function.h 2012-08-06 11:30:29 +0000 | |||
72 | @@ -24,6 +24,7 @@ | |||
73 | 24 | #include <drizzled/function/str/strfunc.h> | 24 | #include <drizzled/function/str/strfunc.h> |
74 | 25 | 25 | ||
75 | 26 | namespace drizzle_plugin { | 26 | namespace drizzle_plugin { |
76 | 27 | namespace syslog { | ||
77 | 27 | namespace udf { | 28 | namespace udf { |
78 | 28 | 29 | ||
79 | 29 | class Syslog : public drizzled::Item_str_func | 30 | class Syslog : public drizzled::Item_str_func |
80 | @@ -40,6 +41,7 @@ | |||
81 | 40 | }; | 41 | }; |
82 | 41 | 42 | ||
83 | 42 | } /* namespace udf */ | 43 | } /* namespace udf */ |
84 | 44 | } /* namespace syslog */ | ||
85 | 43 | } /* namepsace drizzle_plugin */ | 45 | } /* namepsace drizzle_plugin */ |
86 | 44 | 46 | ||
87 | 45 | 47 | ||
88 | 46 | 48 | ||
89 | === modified file 'plugin/syslog/logging.cc' | |||
90 | --- plugin/syslog/logging.cc 2012-01-16 02:37:54 +0000 | |||
91 | +++ plugin/syslog/logging.cc 2012-08-06 11:30:29 +0000 | |||
92 | @@ -39,13 +39,18 @@ | |||
93 | 39 | #include "wrap.h" | 39 | #include "wrap.h" |
94 | 40 | 40 | ||
95 | 41 | namespace drizzle_plugin { | 41 | namespace drizzle_plugin { |
96 | 42 | namespace syslog { | ||
97 | 43 | using namespace drizzled; | ||
98 | 44 | |||
99 | 45 | extern bool sysvar_logging_enable; | ||
100 | 42 | 46 | ||
101 | 43 | logging::Syslog::Syslog(const std::string &facility, | 47 | logging::Syslog::Syslog(const std::string &facility, |
105 | 44 | uint64_t threshold_slow, | 48 | uint64_constraint threshold_slow, |
106 | 45 | uint64_t threshold_big_resultset, | 49 | uint64_constraint threshold_big_resultset, |
107 | 46 | uint64_t threshold_big_examined) : | 50 | uint64_constraint threshold_big_examined) : |
108 | 47 | drizzled::plugin::Logging("syslog_query_log"), | 51 | drizzled::plugin::Logging("syslog_query_log"), |
109 | 48 | _facility(WrapSyslog::getFacilityByName(facility.c_str())), | 52 | _facility(WrapSyslog::getFacilityByName(facility.c_str())), |
110 | 53 | sysvar_facility(facility), | ||
111 | 49 | _threshold_slow(threshold_slow), | 54 | _threshold_slow(threshold_slow), |
112 | 50 | _threshold_big_resultset(threshold_big_resultset), | 55 | _threshold_big_resultset(threshold_big_resultset), |
113 | 51 | _threshold_big_examined(threshold_big_examined) | 56 | _threshold_big_examined(threshold_big_examined) |
114 | @@ -56,6 +61,7 @@ | |||
115 | 56 | _("syslog facility \"%s\" not known, using \"local0\""), | 61 | _("syslog facility \"%s\" not known, using \"local0\""), |
116 | 57 | facility.c_str()); | 62 | facility.c_str()); |
117 | 58 | _facility= WrapSyslog::getFacilityByName("local0"); | 63 | _facility= WrapSyslog::getFacilityByName("local0"); |
118 | 64 | sysvar_facility= "local0"; | ||
119 | 59 | } | 65 | } |
120 | 60 | } | 66 | } |
121 | 61 | 67 | ||
122 | @@ -74,7 +80,12 @@ | |||
123 | 74 | { | 80 | { |
124 | 75 | return false; | 81 | return false; |
125 | 76 | } | 82 | } |
126 | 83 | |||
127 | 84 | // return if query logging is not enabled | ||
128 | 85 | if (sysvar_logging_enable == false) | ||
129 | 86 | return false; | ||
130 | 77 | 87 | ||
131 | 88 | |||
132 | 78 | /* | 89 | /* |
133 | 79 | TODO, the session object should have a "utime command completed" | 90 | TODO, the session object should have a "utime command completed" |
134 | 80 | inside itself, so be more accurate, and so this doesnt have to | 91 | inside itself, so be more accurate, and so this doesnt have to |
135 | @@ -119,4 +130,22 @@ | |||
136 | 119 | return false; | 130 | return false; |
137 | 120 | } | 131 | } |
138 | 121 | 132 | ||
139 | 133 | bool logging::Syslog::setFacility(std::string new_facility) | ||
140 | 134 | { | ||
141 | 135 | int tmp_facility= WrapSyslog::getFacilityByName(new_facility.c_str()); | ||
142 | 136 | if(tmp_facility>0) | ||
143 | 137 | { | ||
144 | 138 | _facility= tmp_facility; | ||
145 | 139 | sysvar_facility= new_facility; | ||
146 | 140 | return true; | ||
147 | 141 | } | ||
148 | 142 | return false; | ||
149 | 143 | } | ||
150 | 144 | |||
151 | 145 | std::string& logging::Syslog::getFacility() | ||
152 | 146 | { | ||
153 | 147 | return sysvar_facility; | ||
154 | 148 | } | ||
155 | 149 | |||
156 | 150 | } /* namespace syslog */ | ||
157 | 122 | } /* namespsace drizzle_plugin */ | 151 | } /* namespsace drizzle_plugin */ |
158 | 123 | 152 | ||
159 | === modified file 'plugin/syslog/logging.h' | |||
160 | --- plugin/syslog/logging.h 2011-10-19 19:30:54 +0000 | |||
161 | +++ plugin/syslog/logging.h 2012-08-06 11:30:29 +0000 | |||
162 | @@ -22,28 +22,35 @@ | |||
163 | 22 | 22 | ||
164 | 23 | #include <drizzled/plugin/logging.h> | 23 | #include <drizzled/plugin/logging.h> |
165 | 24 | 24 | ||
170 | 25 | namespace drizzle_plugin | 25 | namespace drizzle_plugin { |
171 | 26 | { | 26 | namespace syslog { |
172 | 27 | namespace logging | 27 | namespace logging { |
169 | 28 | { | ||
173 | 29 | 28 | ||
174 | 30 | class Syslog: public drizzled::plugin::Logging | 29 | class Syslog: public drizzled::plugin::Logging |
175 | 31 | { | 30 | { |
176 | 32 | private: | 31 | private: |
177 | 33 | int _facility; | 32 | int _facility; |
181 | 34 | uint64_t _threshold_slow; | 33 | std::string sysvar_facility; |
179 | 35 | uint64_t _threshold_big_resultset; | ||
180 | 36 | uint64_t _threshold_big_examined; | ||
182 | 37 | 34 | ||
183 | 38 | public: | 35 | public: |
184 | 39 | Syslog(const std::string &facility, | 36 | Syslog(const std::string &facility, |
189 | 40 | uint64_t threshold_slow, | 37 | drizzled::uint64_constraint threshold_slow, |
190 | 41 | uint64_t threshold_big_resultset, | 38 | drizzled::uint64_constraint threshold_big_resultset, |
191 | 42 | uint64_t threshold_big_examined); | 39 | drizzled::uint64_constraint threshold_big_examined); |
192 | 43 | 40 | ||
193 | 41 | /* | ||
194 | 42 | These variables are made public as, otherwise, we will have to make setter functions for each of these variables to change their value | ||
195 | 43 | at runtime or we will have to make these variables extern. Changing them to public ensures that they can be changed at runtime directly. | ||
196 | 44 | */ | ||
197 | 45 | drizzled::uint64_constraint _threshold_slow; | ||
198 | 46 | drizzled::uint64_constraint _threshold_big_resultset; | ||
199 | 47 | drizzled::uint64_constraint _threshold_big_examined; | ||
200 | 44 | virtual bool post (drizzled::Session *session); | 48 | virtual bool post (drizzled::Session *session); |
201 | 49 | bool setFacility(std::string new_facility); | ||
202 | 50 | std::string& getFacility(); | ||
203 | 45 | }; | 51 | }; |
204 | 46 | 52 | ||
205 | 47 | } /* namespace logging */ | 53 | } /* namespace logging */ |
206 | 54 | } /* namespace syslog */ | ||
207 | 48 | } /* namespace drizzle_plugin */ | 55 | } /* namespace drizzle_plugin */ |
208 | 49 | 56 | ||
209 | 50 | 57 | ||
210 | === modified file 'plugin/syslog/module.cc' | |||
211 | --- plugin/syslog/module.cc 2012-01-15 20:54:59 +0000 | |||
212 | +++ plugin/syslog/module.cc 2012-08-06 11:30:29 +0000 | |||
213 | @@ -19,6 +19,7 @@ | |||
214 | 19 | 19 | ||
215 | 20 | #include <config.h> | 20 | #include <config.h> |
216 | 21 | 21 | ||
217 | 22 | #include <drizzled/item.h> | ||
218 | 22 | #include <drizzled/plugin.h> | 23 | #include <drizzled/plugin.h> |
219 | 23 | #include <drizzled/plugin/logging.h> | 24 | #include <drizzled/plugin/logging.h> |
220 | 24 | #include <drizzled/plugin/error_message.h> | 25 | #include <drizzled/plugin/error_message.h> |
221 | @@ -36,16 +37,33 @@ | |||
222 | 36 | using namespace std; | 37 | using namespace std; |
223 | 37 | using namespace drizzled; | 38 | using namespace drizzled; |
224 | 38 | 39 | ||
229 | 39 | namespace drizzle_plugin | 40 | namespace drizzle_plugin { |
230 | 40 | { | 41 | namespace syslog { |
231 | 41 | 42 | ||
232 | 42 | static bool sysvar_logging_enable= false; | 43 | |
233 | 44 | bool sysvar_logging_enable= false; | ||
234 | 43 | static bool sysvar_errmsg_enable= true; | 45 | static bool sysvar_errmsg_enable= true; |
235 | 46 | bool updateFacility(Session *, set_var *); | ||
236 | 44 | 47 | ||
237 | 45 | uint64_constraint sysvar_logging_threshold_slow; | 48 | uint64_constraint sysvar_logging_threshold_slow; |
238 | 46 | uint64_constraint sysvar_logging_threshold_big_resultset; | 49 | uint64_constraint sysvar_logging_threshold_big_resultset; |
239 | 47 | uint64_constraint sysvar_logging_threshold_big_examined; | 50 | uint64_constraint sysvar_logging_threshold_big_examined; |
240 | 48 | 51 | ||
241 | 52 | logging::Syslog *logging_syslog_handler = NULL; | ||
242 | 53 | |||
243 | 54 | bool updateFacility(Session *, set_var* var) | ||
244 | 55 | { | ||
245 | 56 | if (not var->value->str_value.empty()) | ||
246 | 57 | { | ||
247 | 58 | std::string new_facility(var->value->str_value.data()); | ||
248 | 59 | if (logging_syslog_handler->setFacility(new_facility)) | ||
249 | 60 | return false; //success | ||
250 | 61 | else | ||
251 | 62 | return true; // error | ||
252 | 63 | } | ||
253 | 64 | errmsg_printf(error::ERROR, _("syslog_facility cannot be NULL")); | ||
254 | 65 | return true; // error | ||
255 | 66 | } | ||
256 | 49 | 67 | ||
257 | 50 | static int init(drizzled::module::Context &context) | 68 | static int init(drizzled::module::Context &context) |
258 | 51 | { | 69 | { |
259 | @@ -57,32 +75,25 @@ | |||
260 | 57 | context.add(new error_message::Syslog(vm["facility"].as<string>())); | 75 | context.add(new error_message::Syslog(vm["facility"].as<string>())); |
261 | 58 | } | 76 | } |
262 | 59 | 77 | ||
270 | 60 | if (sysvar_logging_enable) | 78 | logging_syslog_handler = new logging::Syslog(vm["facility"].as<string>(), |
271 | 61 | { | 79 | sysvar_logging_threshold_slow.get(), |
272 | 62 | context.add(new logging::Syslog(vm["facility"].as<string>(), | 80 | sysvar_logging_threshold_big_resultset.get(), |
273 | 63 | sysvar_logging_threshold_slow.get(), | 81 | sysvar_logging_threshold_big_examined.get()); |
274 | 64 | sysvar_logging_threshold_big_resultset.get(), | 82 | context.add(logging_syslog_handler); |
268 | 65 | sysvar_logging_threshold_big_examined.get())); | ||
269 | 66 | } | ||
275 | 67 | 83 | ||
276 | 68 | context.add(new plugin::Create_function<udf::Syslog>("syslog")); | 84 | context.add(new plugin::Create_function<udf::Syslog>("syslog")); |
277 | 69 | 85 | ||
280 | 70 | context.registerVariable(new sys_var_const_string_val("facility", | 86 | context.registerVariable(new sys_var_std_string("facility", logging_syslog_handler->getFacility(), NULL, &updateFacility)); |
279 | 71 | vm["facility"].as<string>())); | ||
281 | 72 | context.registerVariable(new sys_var_const_string_val("errmsg_priority", | 87 | context.registerVariable(new sys_var_const_string_val("errmsg_priority", |
282 | 73 | vm["errmsg-priority"].as<string>())); | 88 | vm["errmsg-priority"].as<string>())); |
283 | 74 | context.registerVariable(new sys_var_const_string_val("logging_priority", | 89 | context.registerVariable(new sys_var_const_string_val("logging_priority", |
284 | 75 | vm["logging-priority"].as<string>())); | 90 | vm["logging-priority"].as<string>())); |
287 | 76 | context.registerVariable(new sys_var_bool_ptr_readonly("logging_enable", | 91 | context.registerVariable(new sys_var_bool_ptr("logging_enable", &sysvar_logging_enable, NULL)); |
286 | 77 | &sysvar_logging_enable)); | ||
288 | 78 | context.registerVariable(new sys_var_bool_ptr_readonly("errmsg_enable", | 92 | context.registerVariable(new sys_var_bool_ptr_readonly("errmsg_enable", |
289 | 79 | &sysvar_errmsg_enable)); | 93 | &sysvar_errmsg_enable)); |
296 | 80 | context.registerVariable(new sys_var_constrained_value_readonly<uint64_t>("logging_threshold_slow", | 94 | context.registerVariable(new sys_var_constrained_value<uint64_t>("logging_threshold_slow", logging_syslog_handler->_threshold_slow)); |
297 | 81 | sysvar_logging_threshold_slow)); | 95 | context.registerVariable(new sys_var_constrained_value<uint64_t>("logging_threshold_big_resultset", logging_syslog_handler->_threshold_big_resultset)); |
298 | 82 | context.registerVariable(new sys_var_constrained_value_readonly<uint64_t>("logging_threshold_big_resultset", | 96 | context.registerVariable(new sys_var_constrained_value<uint64_t>("logging_threshold_big_examined", logging_syslog_handler->_threshold_big_examined)); |
293 | 83 | sysvar_logging_threshold_big_resultset)); | ||
294 | 84 | context.registerVariable(new sys_var_constrained_value_readonly<uint64_t>("logging_threshold_big_examined", | ||
295 | 85 | sysvar_logging_threshold_big_examined)); | ||
299 | 86 | 97 | ||
300 | 87 | return 0; | 98 | return 0; |
301 | 88 | } | 99 | } |
302 | @@ -119,6 +130,7 @@ | |||
303 | 119 | _("Syslog Priority of error messages")); | 130 | _("Syslog Priority of error messages")); |
304 | 120 | } | 131 | } |
305 | 121 | 132 | ||
306 | 133 | } /* namespace syslog */ | ||
307 | 122 | } /* namespace drizzle_plugin */ | 134 | } /* namespace drizzle_plugin */ |
308 | 123 | 135 | ||
309 | 124 | DRIZZLE_DECLARE_PLUGIN | 136 | DRIZZLE_DECLARE_PLUGIN |
310 | @@ -129,8 +141,8 @@ | |||
311 | 129 | "Mark Atwood", | 141 | "Mark Atwood", |
312 | 130 | N_("Logs error messages and queries to syslog"), | 142 | N_("Logs error messages and queries to syslog"), |
313 | 131 | PLUGIN_LICENSE_GPL, | 143 | PLUGIN_LICENSE_GPL, |
315 | 132 | drizzle_plugin::init, | 144 | drizzle_plugin::syslog::init, |
316 | 133 | NULL, | 145 | NULL, |
318 | 134 | drizzle_plugin::init_options | 146 | drizzle_plugin::syslog::init_options |
319 | 135 | } | 147 | } |
320 | 136 | DRIZZLE_DECLARE_PLUGIN_END; | 148 | DRIZZLE_DECLARE_PLUGIN_END; |
321 | 137 | 149 | ||
322 | === modified file 'plugin/syslog/wrap.cc' | |||
323 | --- plugin/syslog/wrap.cc 2011-10-20 02:45:57 +0000 | |||
324 | +++ plugin/syslog/wrap.cc 2012-08-06 11:30:29 +0000 | |||
325 | @@ -34,6 +34,7 @@ | |||
326 | 34 | #endif | 34 | #endif |
327 | 35 | 35 | ||
328 | 36 | namespace drizzle_plugin { | 36 | namespace drizzle_plugin { |
329 | 37 | namespace syslog { | ||
330 | 37 | 38 | ||
331 | 38 | WrapSyslog::WrapSyslog () : | 39 | WrapSyslog::WrapSyslog () : |
332 | 39 | _check(false) | 40 | _check(false) |
333 | @@ -101,4 +102,5 @@ | |||
334 | 101 | va_end(ap); | 102 | va_end(ap); |
335 | 102 | } | 103 | } |
336 | 103 | 104 | ||
337 | 105 | } /* namespace syslog */ | ||
338 | 104 | } /* namespace drizzle_plugin */ | 106 | } /* namespace drizzle_plugin */ |
339 | 105 | 107 | ||
340 | === modified file 'plugin/syslog/wrap.h' | |||
341 | --- plugin/syslog/wrap.h 2011-10-20 02:45:57 +0000 | |||
342 | +++ plugin/syslog/wrap.h 2012-08-06 11:30:29 +0000 | |||
343 | @@ -26,6 +26,7 @@ | |||
344 | 26 | #include <drizzled/error/priority_t.h> | 26 | #include <drizzled/error/priority_t.h> |
345 | 27 | 27 | ||
346 | 28 | namespace drizzle_plugin { | 28 | namespace drizzle_plugin { |
347 | 29 | namespace syslog { | ||
348 | 29 | 30 | ||
349 | 30 | class WrapSyslog | 31 | class WrapSyslog |
350 | 31 | { | 32 | { |
351 | @@ -51,5 +52,6 @@ | |||
352 | 51 | return handle; | 52 | return handle; |
353 | 52 | } | 53 | } |
354 | 53 | 54 | ||
355 | 55 | } /* namespace syslog */ | ||
356 | 54 | } /* namespsace drizzle_plugin */ | 56 | } /* namespsace drizzle_plugin */ |
357 | 55 | 57 |