Socket
Socket
Sign inDemoInstall

klg-logger

Package Overview
Dependencies
225
Maintainers
2
Versions
12
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 2.0.2 to 3.0.0-0

19

dist/Logger.d.ts

@@ -1,16 +0,3 @@

import { Tracer } from 'tracer';
/**
* console 是一个没有 constructor 属性的 function,不能直接 class Logger extends console
* 所以需要通过 Function 来做一个桥接,在 Function 的 constructor 中 return console 实例
*/
export declare class Logger extends Function implements Tracer.Logger {
constructor(config?: Tracer.LoggerConfig);
debug(...args: any[]): Tracer.LogOutput;
err(...args: any[]): Tracer.LogOutput;
error(...args: any[]): Tracer.LogOutput;
fatal(...args: any[]): Tracer.LogOutput;
info(...args: any[]): Tracer.LogOutput;
log(...args: any[]): Tracer.LogOutput;
trace(...args: any[]): Tracer.LogOutput;
warn(...args: any[]): Tracer.LogOutput;
}
export * from 'tracer';
import { console as Logger, dailyfile as LoggerDaily } from 'tracer';
export { Logger, LoggerDaily };
"use strict";
function __export(m) {
for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
}
Object.defineProperty(exports, "__esModule", { value: true });
__export(require("tracer"));
const tracer_1 = require("tracer");
/**
* console 是一个没有 constructor 属性的 function,不能直接 class Logger extends console
* 所以需要通过 Function 来做一个桥接,在 Function 的 constructor 中 return console 实例
*/
class Logger extends Function {
constructor(config) {
super();
Object.setPrototypeOf(tracer_1.console, Logger.prototype);
const instance = tracer_1.console(config);
instance.err = instance.error;
return instance;
}
// 下列方法都会被覆盖,只做声明用, 无需实现
debug(...args) {
return undefined;
}
err(...args) {
return this.error(...args);
}
error(...args) {
return undefined;
}
fatal(...args) {
return undefined;
}
info(...args) {
return undefined;
}
log(...args) {
return undefined;
}
trace(...args) {
return undefined;
}
warn(...args) {
return undefined;
}
}
exports.Logger = Logger;
exports.Logger = tracer_1.console;
exports.LoggerDaily = tracer_1.dailyfile;
//# sourceMappingURL=Logger.js.map

24

dist/Logger.test.js

@@ -7,3 +7,3 @@ "use strict";

it(' test ts log', async () => {
const logger = new Logger_1.Logger({
const logger = Logger_1.Logger({
level: 'log',

@@ -24,11 +24,11 @@ stackIndex: 1,

it(' test info', async () => {
const logger = new Logger_1.Logger();
const logger = Logger_1.Logger();
logger.info('hello world');
});
it(' test debug', async () => {
const logger = new Logger_1.Logger();
const logger = Logger_1.Logger();
logger.debug('hello world');
});
it(' test warn', async () => {
const logger = new Logger_1.Logger({
const logger = Logger_1.Logger({
transport: function (data) {

@@ -44,10 +44,22 @@ assert(data.level === 4);

it(' test error', async () => {
const logger = new Logger_1.Logger();
const logger = Logger_1.Logger();
logger.error('hello world');
});
it(' test err', async () => {
const logger = new Logger_1.Logger();
const logger = Logger_1.Logger();
logger.err = logger.error;
logger.err('hello world');
});
it(' daily ', async () => {
const logger = Logger_1.LoggerDaily({
root: '/data/app/log',
maxLogFiles: 10,
allLogsFileName: true,
level: 'log'
});
logger.log('hello world');
logger.err = logger.error;
logger.err('hello world');
});
});
//# sourceMappingURL=Logger.test.js.map
{
"name": "klg-logger",
"version": "2.0.2",
"version": "3.0.0-0",
"description": "log 工具,基于 tracer,简单,可以显示 log 的位置",

@@ -25,3 +25,3 @@ "main": "dist/index.js",

"dependencies": {
"tracer": "0.9.1"
"tracer": "^0.9.2"
},

@@ -28,0 +28,0 @@ "devDependencies": {

@@ -5,6 +5,8 @@ # klg-logger

## 配置
见 tracer 文档 https://www.npmjs.com/package/tracer
3.0 版本开始,将不对 tracer 做任何封装,直接使用 Tracer
## 用法
详细用法见 tracer 文档 https://www.npmjs.com/package/tracer
## 基本用法
### 简单版本

@@ -16,4 +18,4 @@ 默认版本是把 log 输出到 console

const logger = new Logger({
level: config.get('log.level'),
const logger = Logger({
level: config.get('log.level'),
dateformat: 'yyyy-mm-dd HH:MM:ss.L',

@@ -30,6 +32,66 @@ inspectOpt: {

export default logger
export {logger}
```
配置项的详细解释:
```
interface LoggerConfig {
/**
* Output format (Using `tinytim` templating)
*
* Defaults to: `"{{timestamp}} <{{title}}> {{file}}:{{line}} ({{method}}) {{message}}"`
*
* Possible values:
* - timestamp: current time
* - title: method name, default is 'log', 'trace', 'debug', 'info', 'warn', 'error','fatal'
* - level: method level, default is 'log':0, 'trace':1, 'debug':2, 'info':3, 'warn':4, 'error':5, 'fatal':6
* - message: printf message, support %s string, %d number, %j JSON and auto inspect
* - file: file name
* - line: line number
* - pos: position
* - path: file's path
* - method: method name of caller
* - stack: call stack message
*/
format?: string | [string, LevelOption<string>];
/**
* Datetime format (Using `Date Format`)
*/
dateformat?: string;
filters?: FilterFunction[] | LevelOption<FilterFunction> | Array<FilterFunction | LevelOption<FilterFunction | FilterFunction[]>>;
/**
* Output the log, if level of log larger than or equal to `level`.
*/
level?: string | number;
methods?: string[];
/**
* Get the specified index of stack as file information. It is useful for development package.
*/
stackIndex?: number;
inspectOpt?: {
/**
* If true then the object's non-enumerable properties will be shown too. Defaults to false.
*/
showHidden: boolean,
/**
* Tells inspect how many times to recurse while formatting the object.
* This is useful for inspecting large complicated objects.
* Defaults to 2. To make it recurse indefinitely pass null.
*/
depth: number
};
/**
* Pre-process the log object.
*/
preprocess?(data: LogOutput): void;
/**
* Transport function (e.g. console.log)
*/
transport?: TransportFunction | TransportFunction[];
}
```
### 自定义 transport

@@ -39,2 +101,3 @@ 如果你需要把 log 输出到文件或者发送其他地方,可以自定义 transport function

```js
import { Logger } from 'klg-logger'
const logger = new Logger({

@@ -54,1 +117,49 @@ level: 'log',

```
### 每日分割日志
如果你需要把 log 输出到文件或者发送其他地方,可以自定义 transport function
```js
import { LoggerDaily } from 'klg-logger'
const logger = LoggerDaily({
root: '/data/app/log',
maxLogFiles: 10,
allLogsFileName : true,
level: 'log'
})
logger.log('hello world')
logger.err = logger.error
logger.err('hello world')
```
配置字段:
```
interface DailyFileConfig {
/**
* All daily log file's dir, default to: `'.'`.
*/
root?: string;
/**
* Log file path format.
*
* Default to: `'{{root}}/{{prefix}}.{{date}}.log'`
*
* Possible values:
* - `root`: all daily log file's dir, default to: `'.'`.
* - `prefix`: it equal to `allLogsFileName`, if `allLogsFileName` is provided; else it will be the method name.
* - `date`: today's date.
*/
logPathFormat?: string;
/**
* Datetime format (Using `Date Format`)
*/
splitFormat?: string;
/**
* If `allLogsFileName` is provided then all level logs will be move to one daily log file.
*/
allLogsFileName?: boolean;
maxLogFiles?: number;
}
```
import * as assert from 'power-assert'
import {Logger} from './Logger'
import {Logger, LoggerDaily} from './Logger'

@@ -7,3 +7,3 @@ describe('logger ts test', async function () {

it(' test ts log', async () => {
const logger = new Logger({
const logger = Logger({
level: 'log',

@@ -25,3 +25,3 @@ stackIndex: 1,

it(' test info', async () => {
const logger = new Logger()
const logger = Logger()
logger.info('hello world')

@@ -31,3 +31,3 @@ })

it(' test debug', async () => {
const logger = new Logger()
const logger = Logger()
logger.debug('hello world')

@@ -37,3 +37,3 @@ })

it(' test warn', async () => {
const logger = new Logger({
const logger = Logger({
transport: function (data) {

@@ -50,3 +50,3 @@ assert(data.level === 4)

it(' test error', async () => {
const logger = new Logger()
const logger = Logger()
logger.error('hello world')

@@ -56,5 +56,18 @@ })

it(' test err', async () => {
const logger = new Logger()
const logger = Logger()
logger.err = logger.error
logger.err('hello world')
})
it(' daily ', async () => {
const logger = LoggerDaily({
root: '/data/app/log',
maxLogFiles: 10,
allLogsFileName : true,
level: 'log'
})
logger.log('hello world')
logger.err = logger.error
logger.err('hello world')
})
})

@@ -1,48 +0,5 @@

import {console, Tracer} from 'tracer'
export * from 'tracer'
import {console as Logger, dailyfile as LoggerDaily} from 'tracer'
/**
* console 是一个没有 constructor 属性的 function,不能直接 class Logger extends console
* 所以需要通过 Function 来做一个桥接,在 Function 的 constructor 中 return console 实例
*/
export class Logger extends Function implements Tracer.Logger {
constructor (config?: Tracer.LoggerConfig) {
super()
Object.setPrototypeOf(console, Logger.prototype)
const instance = console(config as any) as Logger
instance.err = instance.error
return instance
}
// 下列方法都会被覆盖,只做声明用, 无需实现
debug (...args: any[]): Tracer.LogOutput {
return undefined
}
err (...args: any[]): Tracer.LogOutput {
return this.error(...args)
}
error (...args: any[]): Tracer.LogOutput {
return undefined
}
fatal (...args: any[]): Tracer.LogOutput {
return undefined
}
info (...args: any[]): Tracer.LogOutput {
return undefined
}
log (...args: any[]): Tracer.LogOutput {
return undefined
}
trace (...args: any[]): Tracer.LogOutput {
return undefined
}
warn (...args: any[]): Tracer.LogOutput {
return undefined
}
}
export {Logger, LoggerDaily}
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc