Morning dev@,
I just committed mod_log_json to trunk in r1829898.
Right now, to use it you need something like this:
LogFormat "%^JS" json
CustomLog "logs/access_log.json" json
Currently it has a static format of the JSON, and example message is like this:
{
"log_id": null,
"vhost": "127.0.0.1",
"status": "404",
"proto": "HTTP\/1.1",
"method": "GET",
"uri": "\/x",
"srcip": "127.0.0.1",
"bytes_sent": 199,
"hdrs": {
"user-agent": "curl\/7.54.0"
}
}
Some changes I'd like to figure out:
- Right now mod_log_json is a format string to mod_log_config -- this
is mostly to be able to leverage mod_log_config's support to write to
many outputs (files, buffered logs, pipes, programs, etc).
- Leveraging the existing mod_log_config format strings. Exposing the
internal hash of callbacks isn't that hard, I experimented with adding
a hook of that here
<https://github.com/apache/httpd/commit/231890c5b60a4a728e1042721e802663b6ce1e40>,
but a bigger refactoring is needed to expose mod_log_config's parsing
of the format strings, rather than just their key-names.
- mod_log_json is not configurable right now, the format is static.
Obviously, being able to configure what is logged, what headers, etc
is valuable. I played with some options here, but wasn't happy with
it. Any ideas?
- (small) I'd like to be able to log in RFC-3339 timestamps, in
JSON-world this seems like the most common format by far. Just need
to do the work to export an apr_time_t that way, I don't think there
is existing code for that?
Cheers,
Paul