| 1 | <p align="center" id="lnm"> |
| 2 | <img src="/static/logobanner.png"/> |
| 3 | </p> |
| 4 | <p align="center"> |
| 5 | <i><b>(WIP)</b> A lightweight C logging library and parser for event-oriented logs.</i> |
| 6 | </p> |
| 7 | <p align="center"> |
| 8 | <a href="https://github.com/JoshuaS3/lognestmonster/blob/dev/LICENSE"> |
| 9 | <img src="https://img.shields.io/github/license/joshuas3/lognestmonster?style=flat-square"/> |
| 10 | </a> |
| 11 | <a href="https://github.com/JoshuaS3/lognestmonster/tree/dev"> |
| 12 | <img src="https://img.shields.io/badge/version-(WIP) 0.3.0-informational?style=flat-square"/> |
| 13 | </a> |
| 14 | <a href="https://github.com/JoshuaS3/lognestmonster/blob/dev/src/c/lognestmonster.h"> |
| 15 | <img src="https://img.shields.io/github/size/joshuas3/lognestmonster/src/c/lognestmonster.h?label=header%20size&style=flat-square"/> |
| 16 | </a> |
| 17 | <a href="https://app.codacy.com/manual/JoshuaS3/lognestmonster/dashboard"> |
| 18 | <img src="https://img.shields.io/codacy/grade/15048b0c7728497394651e295d61746b/dev?logo=codacy&style=flat-square"/> |
| 19 | </a> |
| 20 | <a href="https://github.com/JoshuaS3/lognestmonster/actions"> |
| 21 | <img src="https://img.shields.io/github/workflow/status/JoshuaS3/lognestmonster/C Header Unit Tests?label=Unit%20Test%20Chain&logo=github&style=flat-square"/> |
| 22 | </a> |
| 23 | <p> |
| 24 |
|
| 25 | Lognestmonster is a general-purpose single-header C logging library that |
| 26 | pertains a number of features: |
| 27 |
|
| 28 | * Nested/layer-based logging capabilities |
| 29 | * Event-oriented log compilation |
| 30 | * Multiple queues or outputs |
| 31 | * Full developer customizability on memory allocation |
| 32 | * Preprocessor handles to incorporate non-standard memory functions |
| 33 | * Full developer customizability on I/O redirection |
| 34 | * Generic filesystem log output |
| 35 | * End-to-end `stdout` and `stdin` piping, allowing data transfer over serial, |
| 36 | socket, or anything else |
| 37 | * A binary format lighter than plaintext |
| 38 | * A feature-packed but comprehensive standalone deserializer/parser |
| 39 | * Interactive textual UI (ncurses) |
| 40 | * Logtree filtering/sorting and navigation |
| 41 | * Data operations such as binary to plaintext conversions and custom hooks on |
| 42 | user-defined events |
| 43 | * Optional daemon for hook events |
| 44 | * Full developer customizability on data display, program controls, and hook |
| 45 | operations |
| 46 |
|
| 47 | _**(WIP)** Not yet meant for development or production use_ |
| 48 |
|
| 49 | ## Performance at Different Optimization Levels |
| 50 |
|
| 51 | Output of `./test performance` as of commit `b54160c`: |
| 52 |
|
| 53 | Optimization Level | Header Binary Size\* (in bytes) | Unit Test Runtime\*\* (in µs) |
| 54 | ------------------ | ------------------------------- | ----------------------------- |
| 55 | -O0 | 22552 | 70 |
| 56 | -O1 | 18424 | 67 |
| 57 | -O2 | 22520 | 69 |
| 58 | -O3 | 26760 | 68 |
| 59 | -Os | 18424 | 69 |
| 60 |
|
| 61 | \*Header binary size is measured by compilation of the following source file: |
| 62 |
|
| 63 | ```c |
| 64 | // tests/header_only.c |
| 65 | #define LNM_INIT |
| 66 | #include "lognestmonster.h" |
| 67 | |
| 68 | int main(void) { |
| 69 | return 0; |
| 70 | } |
| 71 | ``` |
| 72 |
|
| 73 | \*\*Median taken from 200 trials run in sequence to account for variable processor |
| 74 | conditions and behaviors. Run on a mid-tier 3.3GHz processor (i5-4590). Runtime |
| 75 | is measured by the execution and output of [the header's unit |
| 76 | test](tests/header_unit.c). |
| 77 |
|
| 78 | ## Copyright |
| 79 |
|
| 80 | This package is copyrighted by [Joshua 'joshuas3' |
| 81 | Stockin](https://joshstock.in/) and licensed under the [MIT License](LICENSE). |
| 82 |
|
| 83 | A form of the following should be present in each major library source or header |
| 84 | file. |
| 85 |
|
| 86 | ```txt |
| 87 | lognestmonster Copyright (c) 2020 Joshua 'joshuas3' Stockin |
| 88 | <https://joshstock.in> |
| 89 | <https://github.com/JoshuaS3/lognestmonster> |
| 90 | This software is licensed under the MIT License. |
| 91 | ``` |
| 92 |
|