Skip to content

Commit 6118748

Browse files
committed
Open settings for alternation at runtime. Fix #176
1 parent 6bc7195 commit 6118748

File tree

4 files changed

+71
-5
lines changed

4 files changed

+71
-5
lines changed

README.md

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -260,6 +260,30 @@ A `settings` object is the first parameter passed to the `tslog` constructor:
260260
const logger = new Logger<ILogObj>({ /* SETTINGS */ }, defaultLogObject);
261261
```
262262

263+
##### Changing settings at runtime
264+
`settings` is a public property and can also be changed on runtime.
265+
266+
Example on changing `minLevel` on runtime:
267+
268+
```typescript
269+
const logger = new Logger({
270+
minLevel: 1
271+
});
272+
273+
// visible
274+
logger.log(1, "level_one", "LOG1");
275+
// visible
276+
logger.log(2, "level_two", "LOG2");
277+
278+
// change minLevel to 2
279+
logger.settings.minLevel = 2;
280+
281+
// hidden
282+
logger.log(1, "level_one", "LOG3");
283+
// visible
284+
logger.log(2, "level_two", "LOG4");
285+
```
286+
263287
#### Type: pretty, json, hidden
264288

265289
- `pretty` **Default setting** prints out a formatted structured "pretty" log entry.

docs/README.md

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,6 @@ Donations help me allocate more time for my open source work.
4949

5050
## Install
5151

52-
> **`tslog` is a native ES module.**
53-
5452
```bash
5553
npm install tslog
5654
```
@@ -262,6 +260,30 @@ A `settings` object is the first parameter passed to the `tslog` constructor:
262260
const logger = new Logger<ILogObj>({ /* SETTINGS */ }, defaultLogObject);
263261
```
264262

263+
##### Changing settings at runtime
264+
`settings` is a public property and can also be changed on runtime.
265+
266+
Example on changing `minLevel` on runtime:
267+
268+
```typescript
269+
const logger = new Logger({
270+
minLevel: 1
271+
});
272+
273+
// visible
274+
logger.log(1, "level_one", "LOG1");
275+
// visible
276+
logger.log(2, "level_two", "LOG2");
277+
278+
// change minLevel to 2
279+
logger.settings.minLevel = 2;
280+
281+
// hidden
282+
logger.log(1, "level_one", "LOG3");
283+
// visible
284+
logger.log(2, "level_two", "LOG4");
285+
```
286+
265287
#### Type: pretty, json, hidden
266288

267289
- `pretty` **Default setting** prints out a formatted structured "pretty" log entry.

src/BaseLogger.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,9 @@ export * from "./interfaces";
66

77
export class BaseLogger<LogObj> {
88
private readonly runtime: "browser" | "nodejs" | "unknown";
9-
private readonly settings: ISettings<LogObj>;
10-
private subLoggers: BaseLogger<LogObj>[] = [];
9+
public settings: ISettings<LogObj>;
10+
// not needed yet
11+
//private subLoggers: BaseLogger<LogObj>[] = [];
1112

1213
constructor(settings?: ISettingsParam<LogObj>, private logObj?: LogObj, private stackDepthLevel: number = 4) {
1314
const isBrowser = ![typeof window, typeof document].includes("undefined");
@@ -175,7 +176,7 @@ export class BaseLogger<LogObj> {
175176
logObj?: LogObj,
176177
stackDepthLevel?: number
177178
) => this)(subLoggerSettings, this.logObj, this.stackDepthLevel);
178-
this.subLoggers.push(subLogger);
179+
//this.subLoggers.push(subLogger);
179180
return subLogger;
180181
}
181182

tests/Nodejs/7_pretty_Settings.test.ts

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -225,4 +225,23 @@ describe("Pretty: Settings", () => {
225225
expect(getConsoleLog()).toContain(`**${new Date().toISOString().split(".")[0]}`);
226226
expect(getConsoleLog()).toContain("** Test");
227227
});
228+
229+
test("Change settings: minLevel", (): void => {
230+
const logger = new Logger({
231+
type: "pretty",
232+
minLevel: 1,
233+
});
234+
logger.log(1, "custom_level_one", "LOG1");
235+
logger.log(2, "custom_level_two", "LOG2");
236+
237+
// change minLevel to 2
238+
logger.settings.minLevel = 2;
239+
logger.log(1, "custom_level_one", "LOG3");
240+
logger.log(2, "custom_level_two", "LOG4");
241+
242+
expect(getConsoleLog()).toContain(`LOG1`);
243+
expect(getConsoleLog()).toContain(`LOG2`);
244+
expect(getConsoleLog()).not.toContain(`LOG3`);
245+
expect(getConsoleLog()).toContain(`LOG4`);
246+
});
228247
});

0 commit comments

Comments
 (0)