This is the code that runs https://bandolier.learnjsthehardway.com/ for you to review. It uses the https://git.learnjsthehardway.com/learn-javascript-the-hard-way/bandolier-template to create the documentation for the project.
https://bandolier.learnjsthehardway.com/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
54 lines
2.0 KiB
54 lines
2.0 KiB
/*
|
|
A simple logging helper that uses the `pino` logging system. Pino is actually
|
|
not very good but it works well enough. My main complaint is it seems Pino's
|
|
speed comes from doing _zero_ string interpolation on its own. You have to
|
|
craft all of the strings yourself, which is probably the majority of the processing
|
|
time in logging, so Pino is effectively "cheating" by claiming it's fast but
|
|
not doing anything. If you ever want to beat Pino just don't log anything too.
|
|
Fastest log is no logs at all.
|
|
*/
|
|
import pino from 'pino';
|
|
import pinoPretty from 'pino-pretty';
|
|
import path from 'path';
|
|
|
|
const log_level = process.env.PROD === undefined ? "debug" : "info";
|
|
|
|
/*
|
|
Base log connector using `pino` logging. You can use this but
|
|
it's probably better to use the `create` method below so you can
|
|
specify the file this log came from.
|
|
*/
|
|
export const log = pino({
|
|
level: log_level,
|
|
prettyPrint: {
|
|
levelFirst: true,
|
|
colorize: true,
|
|
singleLine: true,
|
|
ignore: "module",
|
|
messageFormat: "{levelLabel}[{pid}] {module}: {msg}"
|
|
},
|
|
prettifier: pinoPretty
|
|
});
|
|
|
|
/*
|
|
This will create a `pino` logger with the name of the file in the log messages. Incredibly
|
|
useful when you're trying to find out where something happened. To make this work you need
|
|
to do the following:
|
|
|
|
```javascript
|
|
const log = logging.create(import.meta.url);
|
|
```
|
|
|
|
The `import.meta.url` is how you get a the current file in ESM style modules. In older
|
|
`node` you'd use so the called "magic" variable `__file`. I guess if you put `__` in a
|
|
variable name it's considered magic, but if you attach `meta.url` to a keyword like `import`
|
|
and then also make that keyword a function magically then it's definitely not magic and
|
|
suprior to a simple variable everyone knows.
|
|
*/
|
|
export const create = (import_url) => {
|
|
const pd = path.parse(import_url);
|
|
const log_line = `${path.basename(pd.dir)}/${pd.base}`;
|
|
return log.child({module: log_line});
|
|
}
|
|
|
|
export default { create, log };
|
|
|