chocolog
Version:
A highlighted android-style logger
133 lines (113 loc) • 3.22 kB
Markdown
A simple logger
```typescript
import { cLog } from "chocolog"
// access directly
cLog.d("🤔")
// create instance with name
const log = cLog.getLogger("tsmap")
log.d("🤔")
```
Parameters length can be `1` or `2+`
```typescript
// content with default header(name)
cLog.d("🤔")
// content with custom header (first param)
cLog.d("thinking face", "🤔")
// multiple content (joining all) params with custom header
cLog.d("faces", "🤔", "🙃", "😗")
```

Parameters type can be anything (but recommend *Serializable*)
```typescript
// primitive type
cLog.i("Primitives", 37, " ", true, " ", null)
// simple object
cLog.i("Object", {
thinking: "🤔",
upsideDown: "🙃",
})
// array
cLog.i(["LoLInsect", "Detected"])
// map
const mp = new Map<string, string>()
mp.set("Top", "Teemo")
mp.set("Mid", "Riven")
mp.set("ADCarry", "Ezreal")
cLog.i("Loading", mp)
// Error
cLog.i("Oops", new Error("Trolling"))
// Function.. (not correctly)
cLog.i("Fn", (str:string) => `Hello, ${str}!`)
```

* *Verbose* (~~336 Hue~~Follows default text color)
* loglevel `1`
* Header `V`
* *Debug* (206 Hue)
* loglevel `2`
* Header `D`
* *Info* (122 Hue)
* loglevel `3`
* Header `I`
* *Warning* (35 Hue)
* loglevel `4`
* Header `W`
* *Error* (4 Hue)
* loglevel `5`
* Header `E`
* Contents will be colored to red
* *Assert* (294 Hue)
* loglevel `6`
* Header `F`

* type `code` string
* type `title` string | number | boolean
* loglevel `1`
* Header `C`
Prints code using emphasize(highlight.js)

## Theme API
Used [highlight.js styles](https://github.com/highlightjs/highlight.js/tree/master/src/styles) from github, so preview and types are available to highlight.js repo.
### `cLog.setCssTheme(css)`
* type `css` css text
Set logger's color schema to `css` css.
Class selector Prefix `hljs` requires to parsing.
### async `cLog.setStyleGithub(theme)`
* type `theme` highlight.js theme (name)
Set logger's color schema to `theme`.
I used emphasize's sheet.
Some theme may not supported.

## Call Origin (Experimental)
Due to some limitation to parse call origin, default is disabled to use call origin.
Call origin can be enabled by passing `CLOG_ORIGIN` enviroment.
This modifies **stacktrace** much deeper globally!
I haven't found the way detecting caller
without extended stacktrace.
```json
// launch.json
"env": {
...
"CLOG_ORIGIN": "true"
}
```
And for typescript, It uses external sourcemap file
to get infomation of `.ts`,
so needs to export sourceMap as `.map` file.
```json
// tsconfig.json
{
...
"sourceMap": true
}
```