diff options
author | Edward Rudd | 2008-10-24 13:55:48 +0000 |
---|---|---|
committer | Edward Rudd | 2008-10-24 13:55:48 +0000 |
commit | 19bbdd68a491721dd4aeff7cacea51148ce3a9b9 (patch) | |
tree | 4e143a77f879f7baf65797c08a4e3a489b4ac755 /utility/logparse.c | |
parent | 50af087b9f3831285869dc8d8bf91cc3e6d5169a (diff) |
add logging function
added @todo tags for what needs to be finished
Diffstat (limited to 'utility/logparse.c')
-rw-r--r-- | utility/logparse.c | 28 |
1 files changed, 17 insertions, 11 deletions
diff --git a/utility/logparse.c b/utility/logparse.c index dfe2e9b..4b5ab40 100644 --- a/utility/logparse.c +++ b/utility/logparse.c | |||
@@ -15,7 +15,7 @@ | |||
15 | apr_hash_t *g_parser_funcs; | 15 | apr_hash_t *g_parser_funcs; |
16 | 16 | ||
17 | static apr_status_t parser_func_regexmatch(apr_pool_t *p, config_t *cfg, | 17 | static apr_status_t parser_func_regexmatch(apr_pool_t *p, config_t *cfg, |
18 | config_output_field_t *field, const char *value, char **ret) | 18 | config_output_field_t *field, const char *value, const char **ret) |
19 | { | 19 | { |
20 | struct { | 20 | struct { |
21 | ap_regex_t *rx; | 21 | ap_regex_t *rx; |
@@ -48,7 +48,7 @@ static apr_status_t parser_func_regexmatch(apr_pool_t *p, config_t *cfg, | |||
48 | } | 48 | } |
49 | 49 | ||
50 | static apr_status_t parser_func_totimestamp(apr_pool_t *p, config_t *cfg, | 50 | static apr_status_t parser_func_totimestamp(apr_pool_t *p, config_t *cfg, |
51 | config_output_field_t *field, const char *value, char **ret) | 51 | config_output_field_t *field, const char *value, const char **ret) |
52 | { | 52 | { |
53 | time_t time; | 53 | time_t time; |
54 | struct tm ts; | 54 | struct tm ts; |
@@ -63,12 +63,18 @@ static apr_status_t parser_func_totimestamp(apr_pool_t *p, config_t *cfg, | |||
63 | } | 63 | } |
64 | 64 | ||
65 | static apr_status_t parser_func_machineid(apr_pool_t *p, config_t *cfg, | 65 | static apr_status_t parser_func_machineid(apr_pool_t *p, config_t *cfg, |
66 | config_output_field_t *field, const char *value, char **ret) | 66 | config_output_field_t *field, const char *value, const char **ret) |
67 | { | 67 | { |
68 | *ret = apr_pstrdup(p,cfg->machineid); | 68 | if (cfg->machineid) { |
69 | *ret = apr_pstrdup(p,cfg->machineid); | ||
70 | } else { | ||
71 | *ret = field->def; | ||
72 | } | ||
69 | return APR_SUCCESS; | 73 | return APR_SUCCESS; |
70 | } | 74 | } |
71 | 75 | ||
76 | /** @todo Implement Query arg ripping function */ | ||
77 | |||
72 | parser_func_t parser_get_func(const char *name) | 78 | parser_func_t parser_get_func(const char *name) |
73 | { | 79 | { |
74 | return apr_hash_get(g_parser_funcs, name, APR_HASH_KEY_STRING); | 80 | return apr_hash_get(g_parser_funcs, name, APR_HASH_KEY_STRING); |
@@ -258,6 +264,7 @@ apr_status_t parse_logfile(config_t *cfg, const char *filename) | |||
258 | rv = apr_file_open(&file, filename, APR_FOPEN_READ | APR_BUFFERED, | 264 | rv = apr_file_open(&file, filename, APR_FOPEN_READ | APR_BUFFERED, |
259 | APR_OS_DEFAULT, tp); | 265 | APR_OS_DEFAULT, tp); |
260 | if (rv != APR_SUCCESS) { | 266 | if (rv != APR_SUCCESS) { |
267 | logging_log(cfg, LOGLEVEL_ERROR, "Could not open %s",filename); | ||
261 | printf("Could not open %s\n", filename); | 268 | printf("Could not open %s\n", filename); |
262 | return rv; | 269 | return rv; |
263 | } | 270 | } |
@@ -298,7 +305,7 @@ apr_status_t parse_processline(apr_pool_t *ptemp, config_t *cfg, char **argv, in | |||
298 | config_output_field_t *ofields; | 305 | config_output_field_t *ofields; |
299 | apr_table_t *datain; | 306 | apr_table_t *datain; |
300 | apr_table_t *dataout; | 307 | apr_table_t *dataout; |
301 | apr_status_t rv; | 308 | apr_status_t rv = APR_SUCCESS; |
302 | int i; | 309 | int i; |
303 | 310 | ||
304 | fmt = apr_hash_get(cfg->log_formats, cfg->logformat, APR_HASH_KEY_STRING); | 311 | fmt = apr_hash_get(cfg->log_formats, cfg->logformat, APR_HASH_KEY_STRING); |
@@ -326,21 +333,20 @@ apr_status_t parse_processline(apr_pool_t *ptemp, config_t *cfg, char **argv, in | |||
326 | } | 333 | } |
327 | if (!ofields[i].func) { | 334 | if (!ofields[i].func) { |
328 | apr_table_setn(dataout,ofields[i].field, val); | 335 | apr_table_setn(dataout,ofields[i].field, val); |
329 | //printf("S: %s = %s\n",ofields[i].field, val); | ||
330 | } else { | 336 | } else { |
331 | char *ret = NULL; | 337 | const char *ret = NULL; |
332 | rv = ((parser_func_t)ofields[i].func)(ptemp, cfg, &ofields[i], val, | 338 | rv = ((parser_func_t)ofields[i].func)(ptemp, cfg, &ofields[i], val, |
333 | &ret); | 339 | &ret); |
334 | if (rv) return rv; | 340 | if (rv) return rv; |
335 | apr_table_setn(dataout, ofields[i].field, ret); | 341 | apr_table_setn(dataout, ofields[i].field, ret); |
336 | //printf("S: %s = %s\n",ofields[i].field, ret); | ||
337 | } | 342 | } |
338 | } | 343 | } |
339 | 344 | ||
340 | /** @todo Run Post Filters here */ | 345 | /** @todo Run Post Filters here */ |
341 | 346 | ||
342 | // Process DB Query | 347 | // Process DB Query |
343 | rv = database_insert(cfg, ptemp, dataout); | 348 | if (!cfg->dryrun) { |
344 | if (rv) return rv; | 349 | rv = database_insert(cfg, ptemp, dataout); |
345 | return APR_SUCCESS; | 350 | } |
351 | return rv; | ||
346 | } | 352 | } |