baryon / tracer

A powerful and customizable logging library for node.js
1.15k stars 119 forks source link

Example of how to use tracer with TypeScript #139

Open basharov opened 1 year ago

basharov commented 1 year ago

I see type definitions in the package, but when I try to import and use this way:

import { colorConsole } from 'tracer'

const logger = colorConsole({})
console.error('some error')

It says Property 'error' does not exist on type 'Logger<"error">.

Can you provide some simple example of how to properly import and use tracer with TypeScript?

Thanks!

Kreedzt commented 1 year ago

It is missing the ts type definition, so we need to do it ourselves.

import * as tracer from 'tracer';

export const logger = tracer.dailyfile({
    root: './logs',
    maxLogFiles: 20,
    transport: [
        function (data) {
            console.log(data.output)
        }
    ]
}) as {
    info: (...args: any[]) => void,
    warn: (...args: any[]) => void,
    debug: (...args: any[]) => void,
    error: (...args: any[]) => void,
    log: (...args: any[]) => void,
};
baryon commented 1 year ago

We have upgraded tracer to version 1.2.0, incorporating declarations for dynamically adding functions to objects. However, we are still facing an issue where ESLint perceives these functions as potentially being undefined. Using an exclamation mark after each function reference feels inelegant. If anyone has a solution to this problem, please submit a patch.

JulesGuesnon commented 5 months ago

Hello! I just found out about the library and this issue as well. I would be glad to fill a PR, but I don't get what you mean by incorporating declarations for dynamically adding functions to objects. If you don't mind taking some time to show me an example of what you want to achieve, I could help implementing it