106 lines
2.6 KiB
Markdown
106 lines
2.6 KiB
Markdown
# Undead Logging
|
|
Logging for stupid idiots like me
|
|
|
|
```ts
|
|
import Logging from "@proxnet/undead-logging"
|
|
|
|
const log = new Logging("Main");
|
|
|
|
log.i("Hello World!");
|
|
```
|
|
|
|
Disable a source:
|
|
```ts
|
|
// .. logging source is in the scope
|
|
log.visible = false;
|
|
|
|
log.debug("I can't be seen!");
|
|
|
|
// no output
|
|
```
|
|
|
|
Change a source's name:
|
|
```ts
|
|
// .. logging source "Main" is in the scope
|
|
|
|
log.n("Network is networking");
|
|
log.source = "Main2";
|
|
log.n("Something happened");
|
|
|
|
// output:
|
|
// 2024-11-14T01:21:40.350Z Main [NETWORK] Network is networking
|
|
// 2024-11-14T01:21:40.350Z Main2 [NETWORK] Something happened
|
|
```
|
|
|
|
Disable a type of message globally:
|
|
```ts
|
|
import Logging, { MessageTypeVisibility } from "@proxnet/undead-logging";
|
|
// .. logging source "Main" is in the scope
|
|
|
|
MessageTypeVisibility.Error = false;
|
|
|
|
// somewhere else, could be a different script
|
|
log.i("I am visible");
|
|
log.error("I am not visible");
|
|
|
|
// output:
|
|
// 2024-11-14T01:21:40.350Z Main [INFO] I am visible
|
|
```
|
|
|
|
## Event Listeners
|
|
Event listeners are called when a message is logged on any logging source
|
|
|
|
An event callback can either receive messages as either:
|
|
* Whole lines, including formatting, colors, excluding newlines
|
|
or
|
|
* Individual `msg` (string), `type` (MessageType), `source` (string), and `time` (Date) arguments
|
|
|
|
Callback ran when a message is logged anywhere:
|
|
```ts
|
|
LoggingListeners.onmsg('basic', msg => {
|
|
// `msg` is a string containing the entire line w/ formatting
|
|
});
|
|
```
|
|
|
|
Callback ran when a message is logged anywhere (this time components are split up):
|
|
```ts
|
|
LoggingListeners.onmsg('type', (msg, type, source, time) => {
|
|
// msg: string
|
|
// type: MessageType - import { MessageType } from "@proxnet/undead-logging";)
|
|
// source: string
|
|
// time: Date
|
|
});
|
|
```
|
|
|
|
Remove callback:
|
|
```ts
|
|
const cb = msg => { /* do something with msg */ };
|
|
LoggingListeners.onmsg('basic', cb);
|
|
LoggingListeners.offmsg('basic', cb);
|
|
```
|
|
|
|
## Time display modes
|
|
|
|
You can display three different formats for time:
|
|
* UTC
|
|
* Unix time (in milliseconds)
|
|
* Local [process] time (in seconds, from the `performance` API)
|
|
|
|
Set the time format:
|
|
```ts
|
|
import { LoggingConfiguration, TimeFormat } from "@proxnet/undead-logging";
|
|
|
|
LoggingConfiguration.timeFormat = TimeFormat.Local
|
|
// or
|
|
LoggingConfiguration.timeFormat = TimeFormat.Utc
|
|
```
|
|
|
|
## (advanced) Logging timing
|
|
|
|
You can control when log functions are executed using `LoggingConfiguration.logTiming`.
|
|
|
|
Logs are sent synchronously by default. You can optionally defer logs with `setImmediate` using `LogTiming.Deferred`
|
|
```ts
|
|
LoggingConfiguration.logTiming = LogTiming.Sync
|
|
LoggingConfiguration.logTiming = LogTiming.Deferred
|
|
``` |