16
16
17
17
#define DEFAULT_LOG_FMT "ABDhmsvRti"
18
18
#define UDP 0
19
- #define TCP 1
19
+ #define TCP 1
20
20
//#define RECONNECT_INTERVAL 120000000 // reconnect every 2min
21
21
#define RECONNECT_INTERVAL 0
22
22
#define MIN_CONNECTIONS 1
@@ -50,6 +50,7 @@ typedef struct {
50
50
const char * tag ; /* Optional tag field */
51
51
const char * fields ; /* String with fields of interest */
52
52
const char * cookie ; /* Log this cookie */
53
+ const char * header ; /* Log this header */
53
54
log_item * * parsed_fields ; /* Link fields to extractor function */
54
55
apr_pool_t * parse_pool ; /* memory pool for option parsing */
55
56
apr_reslist_t * connection_pool ; /* Connection pool, with min, max and ttl settings */
@@ -98,7 +99,7 @@ void log_gelf_register_item(server_rec *server, apr_pool_t *p,
98
99
item -> field_name = field_name ;
99
100
if (arg )
100
101
item -> arg = arg ;
101
-
102
+
102
103
length = strlen (config -> fields );
103
104
for (i = 0 ; i < length ; i ++ ) {
104
105
char * pos ;
@@ -182,6 +183,12 @@ static const char *set_gelf_cookie(cmd_parms *cmd, void *cfg, const char *arg) {
182
183
config -> cookie = arg ;
183
184
return NULL ;
184
185
}
186
+ /* Override log format string */
187
+ static const char * set_gelf_header (cmd_parms * cmd , void * cfg , const char * arg ) {
188
+ gelf_config * config = ap_get_module_config (cmd -> server -> module_config , & log_gelf_module );
189
+ config -> header = arg ;
190
+ return NULL ;
191
+ }
185
192
186
193
static const command_rec log_gelf_directives [] = {
187
194
AP_INIT_FLAG ("GelfEnabled" , set_gelf_enabled , NULL , RSRC_CONF , "Enable or disable GELF logging" ),
@@ -191,6 +198,7 @@ static const command_rec log_gelf_directives[] = {
191
198
AP_INIT_TAKE1 ("GelfTag" , set_gelf_tag , NULL , RSRC_CONF , "Set a identification tag" ),
192
199
AP_INIT_TAKE1 ("GelfFields" , set_gelf_fields , NULL , RSRC_CONF , "List of fields that should be logged" ),
193
200
AP_INIT_TAKE1 ("GelfCookie" , set_gelf_cookie , NULL , RSRC_CONF , "Add this cookie the log message" ),
201
+ AP_INIT_TAKE1 ("GelfHeader" , set_gelf_header , NULL , RSRC_CONF , "Add this header the log message" ),
194
202
{ NULL }
195
203
};
196
204
@@ -399,7 +407,8 @@ static int log_gelf_post_config(apr_pool_t *p, apr_pool_t *plog, apr_pool_t *pte
399
407
log_gelf_register_item (server ,p ,'u' , extract_remote_user , NULL , "_remote_user" );
400
408
log_gelf_register_item (server ,p ,'V' , extract_server_name , NULL , "_server_name" );
401
409
log_gelf_register_item (server ,p ,'v' , extract_virtual_host , NULL , "_virtual_host" );
402
-
410
+ log_gelf_register_item (server ,p ,'X' , extract_header , config -> header , "_header" );
411
+
403
412
return OK ;
404
413
}
405
414
@@ -444,7 +453,7 @@ char * log_gelf_make_json(request_rec *request) {
444
453
445
454
/* init json object */
446
455
json_object * object = json_object_new_object ();
447
-
456
+
448
457
/* attach field pairs to json root */
449
458
json_add_string (object , "version" , "1.1" );
450
459
json_add_string (object , "host" , config -> source );
@@ -562,7 +571,7 @@ void log_gelf_send_message_udp(const transferData* payload, request_rec *request
562
571
if (!con ) {
563
572
return ;
564
573
}
565
-
574
+
566
575
if (verbose > 0 ) {
567
576
log_error (APLOG_MARK , APLOG_ERR , 0 , request -> server ,
568
577
"mod_log_gelf: Sending GELF message: %s" , (char * )payload -> data );
@@ -600,7 +609,7 @@ void log_gelf_send_message_tcp(const transferData* payload, request_rec *request
600
609
if (!con || !con -> s ) {
601
610
return ;
602
611
}
603
-
612
+
604
613
if (verbose > 0 ) {
605
614
log_error (APLOG_MARK , APLOG_ERR , 0 , request -> server ,
606
615
"mod_log_gelf: Sending GELF message: %s" , gelf_payload );
@@ -656,7 +665,7 @@ static void register_hooks(apr_pool_t *p) {
656
665
ap_hook_log_transaction (log_gelf_transaction , NULL , NULL , APR_HOOK_LAST );
657
666
}
658
667
659
- module AP_MODULE_DECLARE_DATA log_gelf_module = {
668
+ module AP_MODULE_DECLARE_DATA log_gelf_module = {
660
669
STANDARD20_MODULE_STUFF ,
661
670
NULL , /* Per-directory configuration handler */
662
671
NULL , /* Merge handler for per-directory configurations */
0 commit comments