@autofleet/logger 4.0.4 → 4.0.5

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/package.json CHANGED
@@ -1,9 +1,13 @@
1
1
  {
2
2
  "name": "@autofleet/logger",
3
- "version": "4.0.4",
3
+ "version": "4.0.5",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
+ "files": [
8
+ "dist",
9
+ "readme.md"
10
+ ],
7
11
  "scripts": {
8
12
  "coverage": "jest --coverage --forceExit --runInBand",
9
13
  "test": "jest --runInBand",
package/.jest.config.js DELETED
@@ -1,8 +0,0 @@
1
- module.exports = {
2
- testEnvironment: 'node',
3
- coverageThreshold: {
4
- global: {
5
- lines: 80,
6
- },
7
- },
8
- };
package/src/example.ts DELETED
@@ -1,13 +0,0 @@
1
- import Logger from './index';
2
-
3
- const logger = Logger('info');
4
-
5
- logger.info('it is working');
6
- logger.error('errors displayed in logs/error.log', new Error('test error'));
7
- logger.debug('debug with object', { a: 5 });
8
-
9
- const loggerMiddleware = () => ({ middleware: Math.random() });
10
- logger.addContextMiddleware(loggerMiddleware);
11
-
12
- logger.info('middleware added', { a: 5 });
13
- logger.error('middleware added', new Error('test error'));
package/src/index.test.ts DELETED
@@ -1,53 +0,0 @@
1
- import Logger from './index';
2
-
3
- const { env } = process;
4
-
5
- describe('Logger', () => {
6
- it('it`s default level is info', () => {
7
- env.NODE_ENV = '';
8
- const logger = Logger();
9
- expect(logger).toBeDefined();
10
- expect(logger.level).toBe('debug');
11
- logger.info('test');
12
- });
13
-
14
- it('its default develpment level is debug', () => {
15
- env.NODE_ENV = 'development';
16
- const logger = Logger();
17
- expect(logger.level).toBe('debug');
18
- });
19
-
20
- it('its default test level is info', () => {
21
- env.NODE_ENV = 'test';
22
- const logger = Logger();
23
- expect(logger.level).toBe('info');
24
- });
25
-
26
- it('its default production level is info', () => {
27
- env.NODE_ENV = 'production';
28
- const logger = Logger();
29
- expect(logger.level).toBe('info');
30
- });
31
-
32
- it('its level can be override by LOG_LEVEL env variable', () => {
33
- env.NODE_ENV = 'development';
34
- env.LOG_LEVEL = 'warn';
35
- const logger = Logger();
36
- expect(logger.level).toBe('warn');
37
- });
38
-
39
- it('its level can be override by function variable', () => {
40
- env.NODE_ENV = 'production';
41
- env.LOG_LEVEL = 'warn';
42
- const logger = Logger('info');
43
- expect(logger.level).toBe('info');
44
- });
45
-
46
- it('its has functions for each level', () => {
47
- const logger = Logger();
48
- expect(typeof logger.error).toBe('function');
49
- expect(typeof logger.warn).toBe('function');
50
- expect(typeof logger.info).toBe('function');
51
- expect(typeof logger.debug).toBe('function');
52
- });
53
- });
package/src/index.ts DELETED
@@ -1,117 +0,0 @@
1
- import Pino from 'pino';
2
- import { gcpLogOptions } from 'pino-cloud-logging';
3
-
4
- // eslint-disable-next-line no-shadow
5
- export enum LogLevel {
6
- trace = 'trace',
7
- debug = 'debug',
8
- info = 'info',
9
- warn = 'warn',
10
- error = 'error',
11
- fatal = 'fatal',
12
- }
13
-
14
- type LogLevels = 'trace' | 'debug' | 'info' | 'warn' | 'error' | 'fatal';
15
-
16
- const getLevel = (logLevel?: LogLevel): LogLevel => {
17
- if (logLevel) return logLevel;
18
- if (process.env.LOG_LEVEL) return process.env.LOG_LEVEL as LogLevel;
19
- if (process.env.NODE_ENV && ['production', 'staging', 'test'].includes(process.env.NODE_ENV)) return LogLevel.info;
20
- if (process.env.NODE_ENV === 'development') return LogLevel.debug;
21
- return LogLevel.debug;
22
- };
23
-
24
- const createLoggerInstance = (level: LogLevel, options: object) => {
25
- let loggerInstance;
26
- if (process.env.NODE_ENV === 'production') {
27
- loggerInstance = Pino(gcpLogOptions({
28
- level: process.env.PINO_LOG_LEVEL || 'info',
29
- ...options,
30
- }));
31
- } else {
32
- loggerInstance = Pino({
33
- level: process.env.PINO_LOG_LEVEL || 'info',
34
- transport: {
35
- target: 'pino-pretty',
36
- options: {
37
- colorize: true,
38
- },
39
- },
40
- ...options,
41
- });
42
- }
43
- loggerInstance.level = level;
44
- return loggerInstance;
45
- };
46
-
47
- type MiddlewareFunction = () => Record<string, unknown>;
48
-
49
- export class LoggerInstanceManager {
50
- contextMiddlewares: MiddlewareFunction[];
51
-
52
- logger: Pino.Logger;
53
-
54
- constructor(logLevel?: LogLevel) {
55
- this.contextMiddlewares = [];
56
- this.logger = createLoggerInstance(getLevel(logLevel), {
57
- mixin: () => this.addMetadata(),
58
- });
59
- }
60
-
61
- // To support winston like logging in pino
62
- winstonLikeLoggerCall(logLevel: LogLevel, message: string, meta: unknown) {
63
- if (meta) {
64
- this.logger[logLevel](meta, message);
65
- } else {
66
- this.logger[logLevel](message);
67
- }
68
- }
69
-
70
- addMetadata(): Record<string, unknown> {
71
- const newMetadata = {};
72
- this.contextMiddlewares.forEach((middleware) => {
73
- const metadata = middleware();
74
- Object.assign(newMetadata, metadata);
75
- });
76
- return newMetadata;
77
- }
78
-
79
- addContextMiddleware(middleware: MiddlewareFunction) {
80
- this.contextMiddlewares.push(middleware);
81
- }
82
-
83
- trace(message: string, meta?: unknown) {
84
- this.winstonLikeLoggerCall(LogLevel.trace, message, meta);
85
- }
86
-
87
- debug(message: string, meta?: unknown) {
88
- this.winstonLikeLoggerCall(LogLevel.debug, message, meta);
89
- }
90
-
91
- info(message: string, meta?: unknown) {
92
- this.winstonLikeLoggerCall(LogLevel.info, message, meta);
93
- }
94
-
95
- warn(message: string, meta?: unknown) {
96
- this.winstonLikeLoggerCall(LogLevel.warn, message, meta);
97
- }
98
-
99
- error(message: string, meta?: unknown) {
100
- this.winstonLikeLoggerCall(LogLevel.error, message, meta);
101
- }
102
-
103
- fatal(message: string, meta?: unknown) {
104
- this.winstonLikeLoggerCall(LogLevel.fatal, message, meta);
105
- }
106
-
107
- child(metadata: Record<string, unknown>) {
108
- return this.logger.child(metadata);
109
- }
110
-
111
- get level() {
112
- return this.logger.level;
113
- }
114
- }
115
-
116
- // eslint-disable-next-line max-len
117
- export default (loglevel?: LogLevels): LoggerInstanceManager => new LoggerInstanceManager(loglevel as LogLevel);
@@ -1,9 +0,0 @@
1
- {
2
- "extends": "./tsconfig.json",
3
- "exclude": [
4
- "node_modules",
5
- "dist",
6
- "src/**/*.test.ts",
7
- "src/example.ts"
8
- ]
9
- }
package/tsconfig.json DELETED
@@ -1,15 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- "target": "ES6",
4
- "module": "commonjs", /* Specify what module code is generated. */ /* Allow 'import x from y' when a module doesn't have a default export. */
5
- "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */
6
- // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */
7
- "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */
8
-
9
- /* Type Checking */
10
- "strict": true, /* Enable all strict type-checking options. */
11
- "outDir": "./dist",
12
- "declaration": true,
13
- "rootDir": "./src",
14
- }
15
- }