cedarling 0.0.8

The Cedarling: a high-performance local authorization service powered by the Rust Cedar Engine.
Documentation
# Log Engine

 Log Engine is responsible for log all authz and init events.

## Cedarling log types

In Cedarling framework [Bootstrap properties](https://github.com/JanssenProject/jans/wiki/Cedarling-Nativity-Plan#bootstrap-properties), a configuration property called`CEDARLING_LOG_TYPE` can take on one of the following values::

* off
* memory
* std_out
* lock

### Log type `off`

This log type is do nothing. It means that all logs will be ignored.

#### Log type `memory`

This log type stores all logs in memory with a time-to-live (TTL) eviction policy.

`CEDARLING_LOG_TTL` - variable determines how long logs are stored in memory, measured in seconds.

### Log type `std_out`

This log type writes all logs to `stdout`. Without storing or additional handling log messages.
[Standart streams](https://www.gnu.org/software/libc/manual/html_node/Standard-Streams.html).

Configuration options for native targets (not applicable to WASM):
- `CEDARLING_STDOUT_MODE`: Logging mode, either `async` or `immediate` (default).
- `CEDARLING_STDOUT_TIMEOUT_MILLIS`: Maximum time in milliseconds to buffer logs before flushing (only applies to async mode)
- `CEDARLING_STDOUT_BUFFER_LIMIT`: Maximum buffer size in bytes before forcing a flush (only applies to async mode)

In `async` mode, logs are buffered and flushed periodically to improve performance.
In `immediate` mode, each log line is written immediately to stdout.

### Log type `lock`

This log type is send logs to the server (corporate feature). Will be discussed later.

## Log Strategy

We use `LogStrategy` logger to implement all types of logger under one interface.
On creating (method new()) it consumes the `LogConfig` with all information about log type and it configuration. And this **factory** method

## Interfaces

Currently we have 2 interfaces (traits):

* `LogWriter` (not public) it is used to write logs.

All log implementations should implement this.

* `LogStorage` are used to gettting logs from storage.

Currently only `MemoryLogger` implement it.