Log That Request

Request logging by @run-z/log-z logger.
Contains a ZLogging capability that provides a request logger means containing ZLogger instance for handlers.
The log messages are actually written to the log under certain conditions. E.g. when request processing error
occurred, error logged, or immediate logging triggered explicitly. Once immediate logging triggered, all log
messages for the log are recorded to the log, as well as all messages logged after that.
To trigger immediate logging add immediate property with truthy value to log message details like this:
context.log.info('Immediate message', zlogDetails({ immediate: true }));
Example Setup
import { httpListener } from '@hatsy/hatsy';
import { ZLogging } from '@hatsy/log-z-request';
import { Rendering } from '@hatsy/router';
import { logZAtopOf, logZTimestamp, logZWithDetails, zlogDetails } from '@run-z/log-z';
import { logZToStream } from '@run-z/log-z/node';
import { createServer } from 'http';
const server = createServer(
httpListener(
{
handleBy(handler) {
return ZLogging.with({
by: logZTimestamp(
logZToStream(process.stdout),
),
forRequest(logger, { request: { method, url } }) {
return logZWithDetails(
{
method,
url,
},
logZAtopOf(logger),
);
},
}).for(handler);
},
},
Rendering.for(({ log, renderJson }) => {
log.info('Hello!', zlogDetails({ immediate: true }));
renderJson({ hello: 'World!' });
}),
),
);