@lennardgeissler/logger 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +13 -0
- package/LICENSE +0 -0
- package/README.md +159 -0
- package/dist/components/LoggerProvider.d.ts +9 -0
- package/dist/components/LoggerProvider.js +18 -0
- package/dist/context/LoggerContext.d.ts +2 -0
- package/dist/context/LoggerContext.js +5 -0
- package/dist/core/Logger.d.ts +21 -0
- package/dist/core/Logger.js +81 -0
- package/dist/formatters/BaseFormatter.d.ts +4 -0
- package/dist/formatters/BaseFormatter.js +6 -0
- package/dist/formatters/JsonFormatter.d.ts +5 -0
- package/dist/formatters/JsonFormatter.js +15 -0
- package/dist/formatters/TextFormatter.d.ts +7 -0
- package/dist/formatters/TextFormatter.js +18 -0
- package/dist/handlers/BaseHandler.d.ts +8 -0
- package/dist/handlers/BaseHandler.js +13 -0
- package/dist/handlers/ConsoleHandler.d.ts +5 -0
- package/dist/handlers/ConsoleHandler.js +19 -0
- package/dist/handlers/FileHandler.d.ts +7 -0
- package/dist/handlers/FileHandler.js +20 -0
- package/dist/handlers/StorageHandler.d.ts +8 -0
- package/dist/handlers/StorageHandler.js +18 -0
- package/dist/hooks/useLogger.d.ts +1 -0
- package/dist/hooks/useLogger.js +12 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.js +20 -0
- package/dist/react/index.d.ts +3 -0
- package/dist/react/index.js +9 -0
- package/dist/types/LogLevel.d.ts +1 -0
- package/dist/types/LogLevel.js +2 -0
- package/dist/types/LogMessage.d.ts +7 -0
- package/dist/types/LogMessage.js +2 -0
- package/dist/utils/getLogLevelColor.d.ts +2 -0
- package/dist/utils/getLogLevelColor.js +19 -0
- package/dist/utils/getTimestamp.d.ts +1 -0
- package/dist/utils/getTimestamp.js +6 -0
- package/package.json +46 -0
package/CHANGELOG.md
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
# π Changelog
|
2
|
+
|
3
|
+
All notable changes to this project will be documented in this file.
|
4
|
+
|
5
|
+
## [1.0.0] - 2025-01-22
|
6
|
+
|
7
|
+
### Added
|
8
|
+
|
9
|
+
- Initial release
|
10
|
+
- Core Logger functionality
|
11
|
+
- Console, File, and Storage handlers
|
12
|
+
- Text and JSON formatters
|
13
|
+
- TypeScript support
|
package/LICENSE
ADDED
File without changes
|
package/README.md
ADDED
@@ -0,0 +1,159 @@
|
|
1
|
+
# @lennardgeissler/logger
|
2
|
+
|
3
|
+
A flexible, extensible TypeScript logging library that works in both browser and Node.js environments. Supports multiple handlers, formatters, and log levels.
|
4
|
+
|
5
|
+
## π Features
|
6
|
+
|
7
|
+
- π Works in both browser and Node.js environments
|
8
|
+
- π¨ Customizable formatters (Text, JSON)
|
9
|
+
- π Multiple handlers (Console, File, Storage)
|
10
|
+
- π Log levels (debug, info, warn, error, fatal)
|
11
|
+
- π― TypeScript support
|
12
|
+
- π§ͺ Well tested
|
13
|
+
- π Singleton pattern for consistent logging
|
14
|
+
- πΎ Browser storage support (localStorage/sessionStorage)
|
15
|
+
|
16
|
+
## π§ Installation
|
17
|
+
|
18
|
+
```bash
|
19
|
+
npm install @lennardgeissler/logger
|
20
|
+
```
|
21
|
+
|
22
|
+
## π Usage
|
23
|
+
|
24
|
+
```ts
|
25
|
+
import { Logger, ConsoleHandler, TextFormatter } from '@lennardgeissler/logger';
|
26
|
+
// Get logger instance
|
27
|
+
const logger = Logger.getInstance();
|
28
|
+
// Add handler with custom formatter
|
29
|
+
const handler = new ConsoleHandler();
|
30
|
+
handler.setFormatter(new TextFormatter('[{timestamp}] [{level}] {message}'));
|
31
|
+
logger.addHandler(handler);
|
32
|
+
// Start logging!
|
33
|
+
logger.info('Application started', { version: '1.0.0' });
|
34
|
+
logger.debug('Debug message');
|
35
|
+
logger.warn('Warning message', { details: 'Something went wrong' });
|
36
|
+
logger.error('Error occurred', { error: new Error('Failed to process') });
|
37
|
+
```
|
38
|
+
|
39
|
+
## π Handlers
|
40
|
+
|
41
|
+
### ConsoleHandler
|
42
|
+
|
43
|
+
Outputs logs to the console with color support in browsers.
|
44
|
+
|
45
|
+
```ts
|
46
|
+
import { ConsoleHandler } from '@lennardgeissler/logger';
|
47
|
+
const handler = new ConsoleHandler();
|
48
|
+
logger.addHandler(handler);
|
49
|
+
```
|
50
|
+
|
51
|
+
### FileHandler
|
52
|
+
|
53
|
+
Outputs logs to a file (Node.js environment).
|
54
|
+
|
55
|
+
```ts
|
56
|
+
import { FileHandler } from '@lennardgeissler/logger';
|
57
|
+
const handler = new FileHandler('app.log');
|
58
|
+
logger.addHandler(handler);
|
59
|
+
```
|
60
|
+
|
61
|
+
### StorageHandler
|
62
|
+
|
63
|
+
Stores logs in browser's localStorage or sessionStorage.
|
64
|
+
|
65
|
+
```ts
|
66
|
+
import { StorageHandler } from '@lennardgeissler/logger';
|
67
|
+
const handler = new StorageHandler(false, 'app-logs');
|
68
|
+
logger.addHandler(handler);
|
69
|
+
```
|
70
|
+
|
71
|
+
## π¨ Formatters
|
72
|
+
|
73
|
+
### TextFormatter
|
74
|
+
|
75
|
+
Formats logs as plain text using a customizable template.
|
76
|
+
|
77
|
+
```ts
|
78
|
+
import { TextFormatter } from '@lennardgeissler/logger';
|
79
|
+
const formatter = new TextFormatter('[{timestamp}] [{level}] {message}');
|
80
|
+
handler.setFormatter(formatter);
|
81
|
+
```
|
82
|
+
|
83
|
+
### JSONFormatter
|
84
|
+
|
85
|
+
Formats logs as JSON strings.
|
86
|
+
|
87
|
+
```ts
|
88
|
+
import { JsonFormatter } from '@lennardgeissler/logger';
|
89
|
+
const formatter = new JsonFormatter();
|
90
|
+
handler.setFormatter(formatter);
|
91
|
+
```
|
92
|
+
|
93
|
+
## π Log Levels
|
94
|
+
|
95
|
+
Available log levels in order of severity:
|
96
|
+
|
97
|
+
- debug
|
98
|
+
- info
|
99
|
+
- warn
|
100
|
+
- error
|
101
|
+
- fatal
|
102
|
+
|
103
|
+
Set minimum log level:
|
104
|
+
|
105
|
+
```ts
|
106
|
+
logger.setLevel('warn'); // Only warn, error, and fatal will be logged
|
107
|
+
```
|
108
|
+
|
109
|
+
## π§° Custom Handlers
|
110
|
+
|
111
|
+
Create custom handlers by extending BaseHandler:
|
112
|
+
|
113
|
+
```ts
|
114
|
+
import { BaseHandler, LogMessage } from '@lennardgeissler/logger';
|
115
|
+
class CustomHandler extends BaseHandler {
|
116
|
+
handle(log: LogMessage): void {
|
117
|
+
// Your custom logging logic here
|
118
|
+
const formattedLog = this.formatter.format(log);
|
119
|
+
// ... handle the formatted log
|
120
|
+
}
|
121
|
+
}
|
122
|
+
```
|
123
|
+
|
124
|
+
## π¨ Custom Formatters
|
125
|
+
|
126
|
+
Create custom formatters by extending BaseFormatter:
|
127
|
+
|
128
|
+
```ts
|
129
|
+
import { BaseFormatter, LogMessage } from '@lennardgeissler/logger';
|
130
|
+
class CustomFormatter extends BaseFormatter {
|
131
|
+
format(log: LogMessage): string {
|
132
|
+
// Your custom formatting logic here
|
133
|
+
return `Custom format: ${log.message}`;
|
134
|
+
}
|
135
|
+
}
|
136
|
+
```
|
137
|
+
|
138
|
+
## π Changelog
|
139
|
+
|
140
|
+
See [CHANGELOG.md](./CHANGELOG.md) for release history.
|
141
|
+
|
142
|
+
## π€ Contributing
|
143
|
+
|
144
|
+
Contributions are welcome! If you would like to contribute, please follow these steps:
|
145
|
+
|
146
|
+
1. Fork the repository.
|
147
|
+
2. Clone your fork to your local machine.
|
148
|
+
3. Create a new branch: `git checkout -b feature/my-new-feature`.
|
149
|
+
4. Make your changes and commit them: `git commit -am 'Add new feature'`.
|
150
|
+
5. Push your branch to your fork: `git push origin feature/my-new-feature`.
|
151
|
+
6. Open a pull request to merge your changes into the main repository.
|
152
|
+
|
153
|
+
## π License
|
154
|
+
|
155
|
+
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
|
156
|
+
|
157
|
+
## π¨βπ» Authors
|
158
|
+
|
159
|
+
- Lennard Geissler
|
@@ -0,0 +1,9 @@
|
|
1
|
+
import React, { ReactNode } from 'react';
|
2
|
+
import { Logger } from '../core/Logger';
|
3
|
+
interface LoggerProviderProps {
|
4
|
+
children: ReactNode;
|
5
|
+
logger?: Logger;
|
6
|
+
handlers?: Array<any>;
|
7
|
+
}
|
8
|
+
export declare function LoggerProvider({ children, logger, handlers }: LoggerProviderProps): React.JSX.Element;
|
9
|
+
export {};
|
@@ -0,0 +1,18 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
+
};
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
+
exports.LoggerProvider = LoggerProvider;
|
7
|
+
const react_1 = __importDefault(require("react"));
|
8
|
+
const Logger_1 = require("../core/Logger");
|
9
|
+
const LoggerContext_1 = require("../context/LoggerContext");
|
10
|
+
const ConsoleHandler_1 = require("../handlers/ConsoleHandler");
|
11
|
+
function LoggerProvider({ children, logger = Logger_1.Logger.getInstance(), handlers = [new ConsoleHandler_1.ConsoleHandler()] }) {
|
12
|
+
// Initialize logger with handlers if provided
|
13
|
+
react_1.default.useEffect(() => {
|
14
|
+
logger.clearHandlers();
|
15
|
+
handlers.forEach(handler => logger.addHandler(handler));
|
16
|
+
}, [logger, handlers]);
|
17
|
+
return (react_1.default.createElement(LoggerContext_1.LoggerContext.Provider, { value: logger }, children));
|
18
|
+
}
|
@@ -0,0 +1,21 @@
|
|
1
|
+
import { LogLevel } from "../types/LogLevel";
|
2
|
+
import { BaseHandler } from "../handlers/BaseHandler";
|
3
|
+
export declare class Logger {
|
4
|
+
private static instance;
|
5
|
+
private logLevel;
|
6
|
+
private handlers;
|
7
|
+
private constructor();
|
8
|
+
static getInstance(): Logger;
|
9
|
+
addHandler(handler: BaseHandler): void;
|
10
|
+
removeHandler(handler: BaseHandler): void;
|
11
|
+
clearHandlers(): void;
|
12
|
+
setLogLevel(level: LogLevel): void;
|
13
|
+
private shouldLog;
|
14
|
+
private createLogMessage;
|
15
|
+
private log;
|
16
|
+
debug(message: string, context?: Record<string, any> | null): void;
|
17
|
+
info(message: string, context?: Record<string, any> | null): void;
|
18
|
+
warn(message: string, context?: Record<string, any> | null): void;
|
19
|
+
error(message: string, context?: Record<string, any> | null): void;
|
20
|
+
fatal(message: string, context?: Record<string, any> | null): void;
|
21
|
+
}
|
@@ -0,0 +1,81 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.Logger = void 0;
|
4
|
+
const getTimestamp_1 = require("../utils/getTimestamp");
|
5
|
+
class Logger {
|
6
|
+
constructor() {
|
7
|
+
this.logLevel = "info";
|
8
|
+
this.handlers = [];
|
9
|
+
}
|
10
|
+
static getInstance() {
|
11
|
+
if (!Logger.instance) {
|
12
|
+
Logger.instance = new Logger();
|
13
|
+
}
|
14
|
+
return Logger.instance;
|
15
|
+
}
|
16
|
+
addHandler(handler) {
|
17
|
+
this.handlers.push(handler);
|
18
|
+
}
|
19
|
+
removeHandler(handler) {
|
20
|
+
const index = this.handlers.indexOf(handler);
|
21
|
+
if (index > -1) {
|
22
|
+
this.handlers.splice(index, 1);
|
23
|
+
}
|
24
|
+
}
|
25
|
+
clearHandlers() {
|
26
|
+
this.handlers = [];
|
27
|
+
}
|
28
|
+
setLogLevel(level) {
|
29
|
+
this.logLevel = level;
|
30
|
+
}
|
31
|
+
shouldLog(level) {
|
32
|
+
const levels = ["debug", "info", "warn", "error", "fatal"];
|
33
|
+
return levels.indexOf(level) >= levels.indexOf(this.logLevel);
|
34
|
+
}
|
35
|
+
createLogMessage(level, message, context) {
|
36
|
+
return {
|
37
|
+
timestamp: (0, getTimestamp_1.getTimestamp)(),
|
38
|
+
level,
|
39
|
+
message,
|
40
|
+
context
|
41
|
+
};
|
42
|
+
}
|
43
|
+
log(level, message, context) {
|
44
|
+
if (!this.shouldLog(level))
|
45
|
+
return;
|
46
|
+
const logMessage = this.createLogMessage(level, message, context);
|
47
|
+
// If no handlers are registered, use console as fallback
|
48
|
+
if (this.handlers.length === 0) {
|
49
|
+
console.warn('No handlers registered for logger, using console as fallback');
|
50
|
+
console.log(`${logMessage.timestamp} [${level.toUpperCase()}]: ${message}`);
|
51
|
+
if (context)
|
52
|
+
console.log('Context:', context);
|
53
|
+
return;
|
54
|
+
}
|
55
|
+
// Dispatch to all handlers
|
56
|
+
this.handlers.forEach(handler => {
|
57
|
+
try {
|
58
|
+
handler.handle(logMessage);
|
59
|
+
}
|
60
|
+
catch (error) {
|
61
|
+
console.error('Error in log handler:', error);
|
62
|
+
}
|
63
|
+
});
|
64
|
+
}
|
65
|
+
debug(message, context) {
|
66
|
+
this.log("debug", message, context);
|
67
|
+
}
|
68
|
+
info(message, context) {
|
69
|
+
this.log("info", message, context);
|
70
|
+
}
|
71
|
+
warn(message, context) {
|
72
|
+
this.log("warn", message, context);
|
73
|
+
}
|
74
|
+
error(message, context) {
|
75
|
+
this.log("error", message, context);
|
76
|
+
}
|
77
|
+
fatal(message, context) {
|
78
|
+
this.log("fatal", message, context);
|
79
|
+
}
|
80
|
+
}
|
81
|
+
exports.Logger = Logger;
|
@@ -0,0 +1,15 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.JsonFormatter = void 0;
|
4
|
+
const BaseFormatter_1 = require("./BaseFormatter");
|
5
|
+
class JsonFormatter extends BaseFormatter_1.BaseFormatter {
|
6
|
+
format(log) {
|
7
|
+
return JSON.stringify({
|
8
|
+
timestamp: log.timestamp,
|
9
|
+
level: log.level,
|
10
|
+
message: log.message,
|
11
|
+
context: log.context || {}
|
12
|
+
});
|
13
|
+
}
|
14
|
+
}
|
15
|
+
exports.JsonFormatter = JsonFormatter;
|
@@ -0,0 +1,18 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.TextFormatter = void 0;
|
4
|
+
const BaseFormatter_1 = require("./BaseFormatter");
|
5
|
+
class TextFormatter extends BaseFormatter_1.BaseFormatter {
|
6
|
+
constructor(template = '[{timestamp}] [{level}] {message} {context}') {
|
7
|
+
super();
|
8
|
+
this.template = template;
|
9
|
+
}
|
10
|
+
format(log) {
|
11
|
+
return this.template
|
12
|
+
.replace('{timestamp}', log.timestamp)
|
13
|
+
.replace('{level}', log.level.toUpperCase())
|
14
|
+
.replace('{message}', log.message)
|
15
|
+
.replace('{context}', log.context ? JSON.stringify(log.context) : '');
|
16
|
+
}
|
17
|
+
}
|
18
|
+
exports.TextFormatter = TextFormatter;
|
@@ -0,0 +1,8 @@
|
|
1
|
+
import { LogMessage } from "../types/LogMessage";
|
2
|
+
import { BaseFormatter } from "../formatters/BaseFormatter";
|
3
|
+
export declare abstract class BaseHandler {
|
4
|
+
protected formatter: BaseFormatter;
|
5
|
+
constructor(formatter?: BaseFormatter);
|
6
|
+
setFormatter(formatter: BaseFormatter): void;
|
7
|
+
abstract handle(log: LogMessage): void;
|
8
|
+
}
|
@@ -0,0 +1,13 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.BaseHandler = void 0;
|
4
|
+
const TextFormatter_1 = require("../formatters/TextFormatter");
|
5
|
+
class BaseHandler {
|
6
|
+
constructor(formatter) {
|
7
|
+
this.formatter = formatter || new TextFormatter_1.TextFormatter();
|
8
|
+
}
|
9
|
+
setFormatter(formatter) {
|
10
|
+
this.formatter = formatter;
|
11
|
+
}
|
12
|
+
}
|
13
|
+
exports.BaseHandler = BaseHandler;
|
@@ -0,0 +1,19 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.ConsoleHandler = void 0;
|
4
|
+
const BaseHandler_1 = require("./BaseHandler");
|
5
|
+
const getLogLevelColor_1 = require("../utils/getLogLevelColor");
|
6
|
+
class ConsoleHandler extends BaseHandler_1.BaseHandler {
|
7
|
+
handle(log) {
|
8
|
+
const formattedLog = this.formatter.format(log);
|
9
|
+
if (typeof window !== 'undefined') {
|
10
|
+
// Browser environment
|
11
|
+
console.log(`%c${formattedLog}`, (0, getLogLevelColor_1.getLogLevelColor)(log.level));
|
12
|
+
}
|
13
|
+
else {
|
14
|
+
// Node.js environment
|
15
|
+
console.log(formattedLog);
|
16
|
+
}
|
17
|
+
}
|
18
|
+
}
|
19
|
+
exports.ConsoleHandler = ConsoleHandler;
|
@@ -0,0 +1,20 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
+
};
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
+
exports.FileHandler = void 0;
|
7
|
+
const BaseHandler_1 = require("./BaseHandler");
|
8
|
+
const fs_1 = __importDefault(require("fs"));
|
9
|
+
const path_1 = __importDefault(require("path"));
|
10
|
+
class FileHandler extends BaseHandler_1.BaseHandler {
|
11
|
+
constructor(filePath = "logs.txt") {
|
12
|
+
super();
|
13
|
+
this.filePath = path_1.default.resolve(filePath);
|
14
|
+
}
|
15
|
+
handle(log) {
|
16
|
+
const formattedLog = this.formatter.format(log) + '\n';
|
17
|
+
fs_1.default.appendFileSync(this.filePath, formattedLog, "utf-8");
|
18
|
+
}
|
19
|
+
}
|
20
|
+
exports.FileHandler = FileHandler;
|
@@ -0,0 +1,8 @@
|
|
1
|
+
import { BaseHandler } from "./BaseHandler";
|
2
|
+
import { LogMessage } from "../types/LogMessage";
|
3
|
+
export declare class StorageHandler extends BaseHandler {
|
4
|
+
private storage;
|
5
|
+
private key;
|
6
|
+
constructor(useSessionStorage?: boolean, key?: string);
|
7
|
+
handle(log: LogMessage): void;
|
8
|
+
}
|
@@ -0,0 +1,18 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.StorageHandler = void 0;
|
4
|
+
const BaseHandler_1 = require("./BaseHandler");
|
5
|
+
class StorageHandler extends BaseHandler_1.BaseHandler {
|
6
|
+
constructor(useSessionStorage = false, key = "logs") {
|
7
|
+
super();
|
8
|
+
this.storage = useSessionStorage ? sessionStorage : localStorage;
|
9
|
+
this.key = key;
|
10
|
+
}
|
11
|
+
handle(log) {
|
12
|
+
const existingLogs = this.storage.getItem(this.key);
|
13
|
+
const logs = existingLogs ? JSON.parse(existingLogs) : [];
|
14
|
+
logs.push(this.formatter.format(log));
|
15
|
+
this.storage.setItem(this.key, JSON.stringify(logs));
|
16
|
+
}
|
17
|
+
}
|
18
|
+
exports.StorageHandler = StorageHandler;
|
@@ -0,0 +1 @@
|
|
1
|
+
export declare function useLogger(): import("..").Logger;
|
@@ -0,0 +1,12 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.useLogger = useLogger;
|
4
|
+
const react_1 = require("react");
|
5
|
+
const LoggerContext_1 = require("../context/LoggerContext");
|
6
|
+
function useLogger() {
|
7
|
+
const logger = (0, react_1.useContext)(LoggerContext_1.LoggerContext);
|
8
|
+
if (!logger) {
|
9
|
+
throw new Error('useLogger must be used within a LoggerProvider');
|
10
|
+
}
|
11
|
+
return logger;
|
12
|
+
}
|
package/dist/index.d.ts
ADDED
@@ -0,0 +1,10 @@
|
|
1
|
+
export { Logger } from "./core/Logger";
|
2
|
+
export { BaseHandler } from "./handlers/BaseHandler";
|
3
|
+
export { ConsoleHandler } from "./handlers/ConsoleHandler";
|
4
|
+
export { FileHandler } from "./handlers/FileHandler";
|
5
|
+
export { StorageHandler } from "./handlers/StorageHandler";
|
6
|
+
export { BaseFormatter } from './formatters/BaseFormatter';
|
7
|
+
export { JsonFormatter } from './formatters/JsonFormatter';
|
8
|
+
export { TextFormatter } from './formatters/TextFormatter';
|
9
|
+
export type { LogLevel } from "./types/LogLevel";
|
10
|
+
export type { LogMessage } from "./types/LogMessage";
|
package/dist/index.js
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.TextFormatter = exports.JsonFormatter = exports.BaseFormatter = exports.StorageHandler = exports.FileHandler = exports.ConsoleHandler = exports.BaseHandler = exports.Logger = void 0;
|
4
|
+
// Core exports
|
5
|
+
var Logger_1 = require("./core/Logger");
|
6
|
+
Object.defineProperty(exports, "Logger", { enumerable: true, get: function () { return Logger_1.Logger; } });
|
7
|
+
var BaseHandler_1 = require("./handlers/BaseHandler");
|
8
|
+
Object.defineProperty(exports, "BaseHandler", { enumerable: true, get: function () { return BaseHandler_1.BaseHandler; } });
|
9
|
+
var ConsoleHandler_1 = require("./handlers/ConsoleHandler");
|
10
|
+
Object.defineProperty(exports, "ConsoleHandler", { enumerable: true, get: function () { return ConsoleHandler_1.ConsoleHandler; } });
|
11
|
+
var FileHandler_1 = require("./handlers/FileHandler");
|
12
|
+
Object.defineProperty(exports, "FileHandler", { enumerable: true, get: function () { return FileHandler_1.FileHandler; } });
|
13
|
+
var StorageHandler_1 = require("./handlers/StorageHandler");
|
14
|
+
Object.defineProperty(exports, "StorageHandler", { enumerable: true, get: function () { return StorageHandler_1.StorageHandler; } });
|
15
|
+
var BaseFormatter_1 = require("./formatters/BaseFormatter");
|
16
|
+
Object.defineProperty(exports, "BaseFormatter", { enumerable: true, get: function () { return BaseFormatter_1.BaseFormatter; } });
|
17
|
+
var JsonFormatter_1 = require("./formatters/JsonFormatter");
|
18
|
+
Object.defineProperty(exports, "JsonFormatter", { enumerable: true, get: function () { return JsonFormatter_1.JsonFormatter; } });
|
19
|
+
var TextFormatter_1 = require("./formatters/TextFormatter");
|
20
|
+
Object.defineProperty(exports, "TextFormatter", { enumerable: true, get: function () { return TextFormatter_1.TextFormatter; } });
|
@@ -0,0 +1,9 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.LoggerContext = exports.useLogger = exports.LoggerProvider = void 0;
|
4
|
+
var LoggerProvider_1 = require("../components/LoggerProvider");
|
5
|
+
Object.defineProperty(exports, "LoggerProvider", { enumerable: true, get: function () { return LoggerProvider_1.LoggerProvider; } });
|
6
|
+
var useLogger_1 = require("../hooks/useLogger");
|
7
|
+
Object.defineProperty(exports, "useLogger", { enumerable: true, get: function () { return useLogger_1.useLogger; } });
|
8
|
+
var LoggerContext_1 = require("../context/LoggerContext");
|
9
|
+
Object.defineProperty(exports, "LoggerContext", { enumerable: true, get: function () { return LoggerContext_1.LoggerContext; } });
|
@@ -0,0 +1 @@
|
|
1
|
+
export type LogLevel = "debug" | "info" | "warn" | "error" | "fatal";
|
@@ -0,0 +1,19 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.getLogLevelColor = getLogLevelColor;
|
4
|
+
function getLogLevelColor(level) {
|
5
|
+
switch (level) {
|
6
|
+
case "debug":
|
7
|
+
return "color: gray;";
|
8
|
+
case "info":
|
9
|
+
return "color: blue;";
|
10
|
+
case "warn":
|
11
|
+
return "color: orange;";
|
12
|
+
case "error":
|
13
|
+
return "color: red;";
|
14
|
+
case "fatal":
|
15
|
+
return "color: darkred; font-weight: bold;";
|
16
|
+
default:
|
17
|
+
return "color: black;";
|
18
|
+
}
|
19
|
+
}
|
@@ -0,0 +1 @@
|
|
1
|
+
export declare function getTimestamp(): string;
|
package/package.json
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
{
|
2
|
+
"name": "@lennardgeissler/logger",
|
3
|
+
"version": "1.0.0",
|
4
|
+
"main": "dist/index.js",
|
5
|
+
"types": "dist/index.d.ts",
|
6
|
+
"files": [
|
7
|
+
"dist",
|
8
|
+
"README.md",
|
9
|
+
"CHANGELOG.md",
|
10
|
+
"LICENSE"
|
11
|
+
],
|
12
|
+
"scripts": {
|
13
|
+
"clean": "if exist dist rd /s /q dist",
|
14
|
+
"build": "npm run clean && tsc",
|
15
|
+
"test": "jest",
|
16
|
+
"test:watch": "jest --watch",
|
17
|
+
"test:coverage": "jest --coverage",
|
18
|
+
"prepublishOnly": "npm test && npm run build",
|
19
|
+
"preversion": "npm test",
|
20
|
+
"postversion": "git push && git push --tags"
|
21
|
+
},
|
22
|
+
"keywords": [
|
23
|
+
"logging",
|
24
|
+
"typescript",
|
25
|
+
"react",
|
26
|
+
"node"
|
27
|
+
],
|
28
|
+
"author": "Lennard GeiΓler",
|
29
|
+
"license": "MIT",
|
30
|
+
"type": "commonjs",
|
31
|
+
"description": "",
|
32
|
+
"devDependencies": {
|
33
|
+
"@types/jest": "^29.5.14",
|
34
|
+
"@types/node": "^22.10.7",
|
35
|
+
"@types/react": "^19.0.7",
|
36
|
+
"@types/react-dom": "^19.0.3",
|
37
|
+
"@vitejs/plugin-react": "^4.3.4",
|
38
|
+
"jest": "^29.7.0",
|
39
|
+
"ts-jest": "^29.2.5",
|
40
|
+
"typescript": "^5.7.3"
|
41
|
+
},
|
42
|
+
"peerDependencies": {
|
43
|
+
"react": "^19.0.0",
|
44
|
+
"react-dom": "^19.0.0"
|
45
|
+
}
|
46
|
+
}
|