ajstacy06
Joined 5 years ago
Joined 5 years ago
https://adzejs.com/getting-started/setup.html
https://adzejs.com/reference/configuration.html#user-configu...
As for emoji's, they are off by default and are really only for dev with the pretty logger. You are right in that you probably would not want them in production. You would probably use a different formatter like "standard" or "json" anyway which doesn't allow them.
- First-class TypeScript support (not bolted-on)
- Wraps and extends the entire standard API
- A convenient chainable API
- Log Listeners for capturing log data
- Middleware support for plugins and transporting logs
- Log annotations such as namespaces, labels, and other meta data
- Four formats supported out of the box:
- Pretty - Human readable logs that are easy on the eyes
- JSON - Machine readable logs that are compatible with the Bunyan CLI
- Standard - Human readable stdout logs
- Common - Logs that adhere to the Common Log Format
- Everything is customizable and configurable- Tools for caching, filtering, and recalling logs
- Support for creating log threads to track data across multiple scopes
- Convenient child logger API's
If you look at the readme you'll see adze is 8kb bundled and gzipped. It's ESM so it has tree-shaking support. It's tiny. The Vue dependency is for the docs.
Of course console methods are universal. This library isn't providing console methods, it's providing enterprise/production level functionality on top of the console.
If you want to use Winston in Sveltekit or the like, you have to wrap browser checks around parts of it, otherwise it will explode when bundled.
I had posted about my project https://adzejs.com a couple of years ago and it was met with a lot of interest, so I'm writing about the major v2 update that's just been released to see if anyone is interested.
What makes Adze interesting compared to other logging libraries like pino, bunyan, winston, etc?
Adze is universal. This means that Adze will "just work" in all of your environments. This is especially handy when working with SSR projects like sveltekit, nuxt, next, etc. You can also use Adze with Bun or Deno without any special adaptations or considerations.
Adze 2.x is also smaller (13.29kb minified and brotlied) and faster than the original. Benchmarks put it at generating 100,000 logs in ~700ms.
Version 2 also offers a cleaner API than version 1 as it no longer uses factories and instead uses static class methods.
import adze from 'adze';
// Generating a log
adze.timestamp.ns('foo').log('A log with a timestamp and namespace.');
// Making a child logger
const logger = adze.timestamp.ns('foo').seal();
logger.log('A log with a timestamp and namespace.');
Adze 2.x comes with support for four different types of log formats out-of-the-box. These formats include:- a human-readable pretty format - a machine-readable JSON format that is compatible with the Bunyan CLI - a format for common logs - and a format for simple stdout logging
Adze 2.x also offers better extensibility support. You can now create custom formatters and custom middleware for modifying log behavior or transporting them to another source (like a file, etc). Log listeners are also still supported.
Changing formats is easy.
import adze, { setup } from 'adze';
setup({
format: 'json', // <- Change with an env var
});
adze.withEmoji.success('This is a pretty log!');
Adze 2.x also includes a handy new template literal logging feature for times where you are repeating logs frequently with slightly different messages (like error messages in a catch). Adze offers a new sealTag terminator that will seal your configuration into a template literal tag function to further simplify your logging.Example
import adze from 'adze';
// Let's create a reusable ERR tag with emoji's, timestamps, and the "my-module" namespace.
const ERR = adze.withEmoji.timestamp.ns('my-module').sealTag();
try {
// do something that could fail...
} catch (e) {
ERR`Printing my error as an error log! ${e}`;
}
There is much, much more to Adze than what I can present in this post, but please check it out at https://adzejs.com and let me know what you think! Try it out!Also, please give it a star to bookmark it at https://github.com/adzejs/adze if you might use it in the future!
I appreciate any feedback as well. This has been a huge labor of love for me and I hope it benefits you all as well.
Thank you!