Structure logs for human and computer
Get pretty good readability for human, computer, grep
, Logstash…
Even if the raw data is not being optimal for either,
this can be improved by diplaying a reformatted colorized output (human)
or by exporting to JSON/CBOR/…
-
Logfmt - Historical log format in this spirit https://brandur.org/logfmt
time="2015-03-26T01:27:38-04:00" level=info msg="Stopping all fetchers" tag=stopping_fetchers module=kafka.consumer.ConsumerFetcherManager id=ConsumerFetcherManager-1382721708341 time="2015-03-26T01:27:38-04:00" level=info msg="Performing log compaction" tag=log_compaction module=kafka.compacter.LogCompactionManager time="2015-03-26T01:27:38-04:00" level=info msg="Performing garbage collection" tag=gc module=kafka.cleaner.GarbageCollectionManager time="2015-03-26T01:27:38-04:00" level=info msg="Starting all fetchers" tag=starting_fetchers module=kafka.consumer.ConsumerFetcherManager id=ConsumerFetcherManager-1382721708341
- Logrus - Battle tested logger for Go https://github.com/sirupsen/logrus
- Zerolog - Better performance by reducing memory allocation for Go https://github.com/rs/zerolog
- Zap :zap: - Also targeting a great performance for Go https://github.com/uber-go/zap
- Log - Another logger for Go https://github.com/apex/log
- Emodebug 🤩 - Dart logger with emojis https://github.com/synw/emodebug
Log level meaning
Depending on the historical engineering culture, systems share similar log levels, but with some differences. Below is a great list of log levels that your application may use:
Level | Short name | Description |
---|---|---|
FATAL | FAT | La source de l’arrêt de l’application, utile pour trouver l’origine de l’arrêt dans tous les logs |
ERROR | ERR | Une erreur que le développeur ne sait pas comment la gérer => Quand on aura une bonne implémentation, cela deviendra une alerte (WARNING) |
WARNING | WRN | Une erreur que l’application sait gérer |
NOTICE | NOT | Un changement d’état de l’application (Init, Ready, Stopping…) ou des données (Open, Frozen…), ceci peut être représenté par des émoticônes comme implémenté par Emodebug |
INFO | INF | Â |
DEBUG | DBG | Â |
TRACE | TRC | Chaque fonction, avec optionnellement ses paramètres INPUT et sa sortie OUTPUT |
See more about syslog and Log4J log levels
🚀
The syslog protocol
The syslog is defined by the RFC 5424. The data is structured within each log line as the following:
See how your application can structure log data in order to be powerfully processed by log analysis tools.