# Introducing Crylog

**URL:** <https://forum.crystal-lang.org/t/introducing-crylog/797>\
**Category:** News\
**Created:** [May 27, 2019, 1:44pm UTC](https://forum.crystal-lang.org/t/introducing-crylog/797 "2019-05-27T13:44:38Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Blacksmoke16](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/blacksmoke16/32/1241_2.png) [@Blacksmoke16](https://forum.crystal-lang.org/u/Blacksmoke16)\
**Post date:** [May 27, 2019, 1:44pm UTC](https://forum.crystal-lang.org/t/introducing-crylog/797/1 "2019-05-27T13:44:38Z")

</div>

Hey, I wanted to take a minute and officially introduce a shard I been working on that is now ready for public usage, although still in its early stages.

> **[Blacksmoke16/crylog](https://github.com/Blacksmoke16/crylog)**
>
> Flexible logging framework based on Monolog. Contribute to Blacksmoke16/crylog development by creating an account on GitHub.

Crylog is a flexible logging framework for Crystal based on [Monolog](https://github.com/Seldaek/monolog/). It allows applications to have multiple named loggers, each with various handlers, processors, formatters.

A handler would be something that does something with a logged message. For example logging to a file or STDOUT. But it could also be sending the message to Sentry, or a database etc.

A processor adds extra data to each message. A good use case of this would be adding user/customer ids to each logged message that would represent the user which caused that message to be logged.

Lastly, a formatter of course determines how a message gets serialized. Formatters allow different styles to be used depending on the handler, as HTML would be great for email handlers but not so much for log files.

The core functionality is complete, however there is still work to be done adding handlers/processors/formatters that could benefit all projects. So if anyone wishes to create a PR and “own” a specific piece of functionality I would be grateful, as then each handler is maintained by someone who uses it.

Of course if anyone has any feedback/suggestions, or finds a bug; feel free to get in touch on gitter or make an issue.

---

<div class="post-metadata">

**Author:** ![girng](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/girng/32/127_2.png) [@girng](https://forum.crystal-lang.org/u/girng)\
**Post date:** [June 1, 2019, 8:39am UTC](https://forum.crystal-lang.org/t/introducing-crylog/797/2 "2019-06-01T08:39:14Z")

</div>

My logging system is a `puts` underneath a `rescue`. I’m on top of the world.

---

<div class="post-metadata">

**Author:** ![nsuchy](https://avatars.discourse-cdn.com/v4/letter/n/c0e974/32.png) [@nsuchy](https://forum.crystal-lang.org/u/nsuchy)\
**Post date:** [June 1, 2019, 6:03pm UTC](https://forum.crystal-lang.org/t/introducing-crylog/797/3 "2019-06-01T18:03:04Z")

</div>

Excellent work, you’re always pushing out really cool stuff, look forward to including this in my projects 🙂

---

<div class="post-metadata">

**Author:** ![Blacksmoke16](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/blacksmoke16/32/1241_2.png) [@Blacksmoke16](https://forum.crystal-lang.org/u/Blacksmoke16)\
**Post date:** [October 18, 2019, 3:55am UTC](https://forum.crystal-lang.org/t/introducing-crylog/797/4 "2019-10-18T03:55:08Z")

</div>

> **[Blacksmoke16/crylog](https://github.com/Blacksmoke16/crylog/tree/v0.1.4/docs#cryloglogger)**
>
> Flexible logging framework based on Monolog. Contribute to Blacksmoke16/crylog development by creating an account on GitHub.

Released a new version that adds a class compatible with the standard library’s `::Logger` class. Allows using `Crylog` with properties/variables typed as `::Logger` by mapping a logger of a specific channel to the variable.

Should make it much easier to use in other libraries that have support for `::Logger` but not `Crylog` directly.
