- Breaking Change:
LogProxy::processor
is nowP
instead ofOption<P>
. - Breaking Change: rename
LogProxy::processor
toLogProxy::simple
, add a newLogProxy::processor
to support custom processors. - Breaking Change:
Processor::process
now returns()
instead of a bool. - Breaking Change: remove
Processor::next
. You can register your log proxy process as an external extension to achieve the same effect. - Breaking Change: remove
Processor::flush
. - Breaking Change: change the type of
timestamp
inProcessor::process
toTimestamp
. - Breaking Change: remove
MockProcessor
, use()
instead. - Breaking Change: make
SimpleProcessor
generic, addSimpleProcessor::new
, prevent users from creating aSimpleProcessor
directly. - Breaking Change: make
SimpleProcessorBuilder
generic, useSimpleProcessorBuilder::new
to create aSimpleProcessorBuilder
, useSimpleProcessorBuilder::build
to create aSimpleProcessor
, removeSimpleProcessorBuilder::ignore/filter
. - Feat: add
is_emf
util function. - Feat: apply
tracing
. - Feat: add
MockSink
.
- Breaking Change: the proxy will read from
stdin
and won't spawn the handler process.- Users should use wrapper scripts to redirect the output of the handler process to the proxy process using pipes (
|
). - This is to use output redirection (
2>&1
) provided by the system to ensure the log order acrossstdout
andstderr
is correct.
- Users should use wrapper scripts to redirect the output of the handler process to the proxy process using pipes (
- Feat: add optional
Processor::next
andProcessor::truncate
to indicate the start and the end of the current invocation.
- Fix: fix the issue that the log proxy can only write one line per invocation.
- Breaking Change: rename
LogProxy.disable_lambda_telemetry_log_fd
toLogProxy.disable_lambda_telemetry_log_fd_for_handler
. - Breaking Change: rename
Processor
andProcessorBuilder
intoSimpleProcessor
andSimpleProcessorBuilder
. - Breaking Change: add trait
Processor
, makeLogProxy
generic. - Breaking Change:
Processor::process
need a timestamp as the second argument. - Breaking Change:
SimpleProcessor
need aSinkHandle
instead of aSink
.- Use
Sink::spawn
to create aSinkHandle
. - Move
write_line
andflush
toSinkHandle
. - Sink will use a queue to optimize the performance. The queue can be configured by
Sink::buffer_size
.
- Use
- Feat: add
LogProxy::new
. - Feat: add
LogProxy::buffer_size
, store lines in a buffer and record the in-buffer timestamp. Feat: addLogProxy::suppression_timeout_ms
to customize the suppression timeout.- Removed since it's not working for some runtime (e.g. NodeJS). The handler process might be blocked when runtime API response is suppressed, thus there is no new log lines passed to the log proxy.
- Feat: implement
Default
forOutputFormat
. - Feat: add
MockProcessor
. - Feat:
Processor.process
will return whether the line is written to the sink. - Fix: remove
'\r'
in line endings before passed to processor. - Fix: ignore empty lines before passed to processor.
- Fix: apply tokio biased select to ensure logs are processed before the next invocation.
- Perf: reduce async write calls and flush calls.
- Perf: apply AWS Lambda Runtime Proxy v0.2.1.
- Feat: add
OutputFormat
,Sink::format
,Sink::lambda_telemetry_log_fd
. - Fix: check reader buffers before forwarding
invocation/next
to ensure logs are processed.
The initial release.