@rife/logger 0.0.5-beta.9 → 0.0.6-beta.3

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/dist/index.d.ts DELETED
@@ -1,54 +0,0 @@
1
- import winston from 'winston';
2
- import 'winston-daily-rotate-file';
3
- export type { winston };
4
- export declare const getNewTraceId: (size?: number | undefined) => string;
5
- export declare function runInTrace<T>(fn: (...args: any[]) => T): T;
6
- export declare function getTraceId(): any;
7
- export declare namespace Logger {
8
- interface Options {
9
- /**
10
- * 输出日志到console
11
- * 默认:development环境下输出,production环境下不输出
12
- */
13
- writeToConsole?: boolean;
14
- /**
15
- * 输出日志到文件
16
- * 默认:development环境下输出,production环境下不输出
17
- */
18
- writeToFile?: boolean;
19
- /**
20
- * 输出日志的文件目录
21
- * 默认:./logs/
22
- */
23
- dirname?: string;
24
- /**
25
- * 输出日志的文件名
26
- * 默认:server
27
- */
28
- filename?: string;
29
- /**
30
- * 日志输出格式
31
- */
32
- format?: {
33
- /**
34
- * 显示时间
35
- * 默认:true
36
- */
37
- time?: boolean;
38
- /**
39
- * 显示traceId
40
- * 默认:true
41
- */
42
- traceId?: boolean;
43
- };
44
- }
45
- }
46
- export interface Logger {
47
- info: winston.LeveledLogMethod;
48
- warn: winston.LeveledLogMethod;
49
- error: winston.LeveledLogMethod;
50
- setMetaData: (data: any) => void;
51
- }
52
- export declare function createLogger(options?: Logger.Options): {
53
- logger: Logger;
54
- };
package/dist/index.js DELETED
@@ -1,131 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createLogger = exports.getTraceId = exports.runInTrace = exports.getNewTraceId = void 0;
4
- const tslib_1 = require("tslib");
5
- const path_1 = tslib_1.__importDefault(require("path"));
6
- const async_hooks_1 = require("async_hooks");
7
- const chalk_1 = tslib_1.__importDefault(require("chalk"));
8
- const nanoid_1 = require("nanoid");
9
- const winston_1 = tslib_1.__importDefault(require("winston"));
10
- const safe_stable_stringify_1 = tslib_1.__importDefault(require("safe-stable-stringify"));
11
- require("winston-daily-rotate-file");
12
- const als = new async_hooks_1.AsyncLocalStorage();
13
- const isDev = () => process.env.NODE_ENV === 'development';
14
- const isProd = () => !isDev();
15
- // https://github.com/CyberAP/nanoid-dictionary/blob/master/src/nolookalikes.js
16
- exports.getNewTraceId = (0, nanoid_1.customAlphabet)('346789ABCDEFGHJKLMNPQRTUVWXYabcdefghijkmnpqrtwxyz', 5);
17
- function runInTrace(fn) {
18
- return als.run({ traceId: (0, exports.getNewTraceId)() }, fn);
19
- }
20
- exports.runInTrace = runInTrace;
21
- function getTraceId() {
22
- return als.getStore()?.traceId;
23
- }
24
- exports.getTraceId = getTraceId;
25
- const levelColor = {
26
- info: chalk_1.default.green,
27
- error: chalk_1.default.redBright,
28
- warn: chalk_1.default.yellow,
29
- };
30
- const levelSymbolMap = {
31
- info: 'INF',
32
- warn: 'WRN',
33
- error: 'ERR',
34
- };
35
- // 设置traceId
36
- // https://www.npmjs.com/package/cls-rtracer
37
- const tracerFormat = (options) => winston_1.default.format.printf(info => {
38
- let traceId = getTraceId();
39
- const color = (message, chalk) => (options.writeToFile ? message : chalk(message));
40
- const levelit = (text) => {
41
- switch (info.level) {
42
- case 'info': {
43
- return color(text, levelColor.info);
44
- }
45
- case 'warn': {
46
- return color(text, levelColor.warn);
47
- }
48
- case 'error': {
49
- return color(text, levelColor.error);
50
- }
51
- }
52
- return text;
53
- };
54
- const levelSymbol = levelSymbolMap[info.level];
55
- const level = levelSymbol ? levelit(` [${levelSymbol}]`) : '';
56
- const service = info.metadata.service ? levelit(` [${info.metadata.service}]`) : '';
57
- const timestamp = options.format.time ? color(info.timestamp, chalk_1.default.gray) : '';
58
- const trace = traceId ? color(` [${traceId}]`, chalk_1.default.gray) : '';
59
- let message = info.message || '';
60
- if (typeof info?.message !== 'string') {
61
- try {
62
- if (isDev()) {
63
- message = '\n' + (0, safe_stable_stringify_1.default)(info?.message, undefined, 4);
64
- }
65
- else {
66
- message = (0, safe_stable_stringify_1.default)(info?.message, undefined, 0);
67
- }
68
- }
69
- catch (e) {
70
- message = 'fail to stringify json';
71
- }
72
- }
73
- message = ' ' + message;
74
- const stack = info.metadata.stack ? color('\n' + info.metadata.stack + '\n', chalk_1.default.gray) : '';
75
- return `${timestamp}${trace}${level}${service}${message}${stack}`;
76
- });
77
- function createLogger(options) {
78
- let transports = [];
79
- let config = {
80
- writeToConsole: options?.writeToConsole ?? isDev(),
81
- writeToFile: options?.writeToFile ?? isProd(),
82
- dirname: options?.dirname || path_1.default.join(process.cwd(), './logs/'),
83
- filename: options?.filename || 'server',
84
- format: {
85
- time: options?.format?.time ?? true,
86
- },
87
- };
88
- if (config.writeToFile) {
89
- transports.push(new winston_1.default.transports.DailyRotateFile({
90
- // https://www.npmjs.com/package/winston-daily-rotate-file
91
- filename: config.filename,
92
- dirname: config.dirname,
93
- datePattern: 'YYYY-MM-DD',
94
- maxFiles: '30d',
95
- extension: '.log',
96
- }));
97
- }
98
- if (config.writeToConsole) {
99
- transports.push(new winston_1.default.transports.Console());
100
- }
101
- const { combine, timestamp, colorize, errors, metadata, splat } = winston_1.default.format;
102
- const timeFormat = isProd() ? 'YYYY-MM-DD HH:mm:ss.SSS' : 'HH:mm:ss.SSS';
103
- let format = [
104
- errors({ stack: true }),
105
- metadata(),
106
- timestamp({ format: timeFormat }),
107
- splat(),
108
- tracerFormat(config),
109
- ];
110
- if (!config.writeToFile) {
111
- format.push(colorize());
112
- }
113
- const instance = winston_1.default.createLogger({
114
- format: combine(...format),
115
- transports,
116
- });
117
- const setMetaData = (data) => {
118
- instance.defaultMeta = {
119
- ...instance.defaultMeta,
120
- ...data,
121
- };
122
- };
123
- const logger = {
124
- info: instance.info.bind(instance),
125
- warn: instance.warn.bind(instance),
126
- error: instance.error.bind(instance),
127
- setMetaData,
128
- };
129
- return { logger };
130
- }
131
- exports.createLogger = createLogger;
package/dist/test.d.ts DELETED
@@ -1 +0,0 @@
1
- export {};
package/dist/test.js DELETED
@@ -1,22 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- process.env.NODE_ENV = 'development';
4
- // process.env.NODE_ENV = 'production';
5
- const _1 = require(".");
6
- const { logger } = (0, _1.createLogger)({ writeToFile: false, writeToConsole: true, format: { time: false } });
7
- const deep = { a: { b: { c: { g: { e: { f: 1 } } } } } };
8
- logger.info('1 %s', { a: 1 });
9
- logger.info('2 %j', deep);
10
- logger.info('3 \n%j', deep);
11
- logger.info('4 %s %s', 1, 2);
12
- logger.info('5 %o', deep);
13
- logger.info(deep);
14
- logger.warn('execed');
15
- logger.error(new Error('not found'));
16
- // import { format } from 'logform';
17
- // const jsonFormat = format.json({ space: 2 });
18
- // const info = jsonFormat.transform({
19
- // level: 'info',
20
- // message: 'my message',
21
- // });
22
- // console.log(info);
package/dist/trace.d.ts DELETED
File without changes
package/dist/trace.js DELETED
@@ -1 +0,0 @@
1
- "use strict";