Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions apps/nest-demo/config/test.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
module.exports = {
starter: {
port: 3000,
enableSwagger: true,
swagger: {},
// logger: {},
enableLogger: true,
},
// test: 1,
}
13 changes: 5 additions & 8 deletions apps/nest-demo/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,30 +10,27 @@
"homePage": "https://142vip.cn"
},
"scripts": {
"dev": "nest start -d -w",
"dev": "NODE_ENV=local RUN_ENV=test nest start -d -w",
"dev:debug": "nest start --debug --watch",
"dev:prod": "node dist/main",
"build": "nest build",
"start": "nest start"
},
"peerDependencies": {
"@142vip/nest": "workspace:*"
},
"dependencies": {
"@142vip/nest-redis": "workspace:*",
"@nestjs/common": "11.1.6",
"@nestjs/core": "11.1.6",
"@nestjs/platform-express": "11.1.6",
"reflect-metadata": "0.2.2",
"rxjs": "7.8.1"
"@142vip/nest-starter": "workspace:*"
},
"devDependencies": {
"@nestjs/cli": "11.0.10",
"@nestjs/schematics": "11.0.9",
"@nestjs/testing": "11.1.7",
"@types/express": "5.0.0",
"@types/jest": "30.0.0",
"@types/supertest": "6.0.2",
"source-map-support": "0.5.21",
"supertest": "7.0.0",
"ts-jest": "29.2.5",
"ts-loader": "9.5.2",
"ts-node": "10.9.2",
"tsconfig-paths": "4.2.0"
Expand Down
7 changes: 5 additions & 2 deletions apps/nest-demo/src/app.module.ts
Original file line number Diff line number Diff line change
@@ -1,14 +1,17 @@
import { RedisModule } from '@142vip/nest-redis'
import { NestRedisModule } from '@142vip/nest-redis'
import { Module } from '@nestjs/common'
import { ConfigExampleModule } from './config-example/config-example.module'
import { RedisExampleModule } from './redis-example/redis-example.module'

@Module({
imports: [
// 全局模块
RedisModule.register({ url: 'redis://localhost:6379' }),
NestRedisModule.register({ url: 'redis://172.16.202.252:6379' }),

// 最佳实践
RedisExampleModule,

ConfigExampleModule,
],
})
export class AppModule {}
15 changes: 15 additions & 0 deletions apps/nest-demo/src/config-example/config-example.controller.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import { StarterConfig } from '@142vip/nest-starter'
import { Controller, Get } from '@nestjs/common'
import { ConfigExampleService } from './config-example.service'

@Controller('config-example')
export class ConfigExampleController {
constructor(
private readonly configExampleService: ConfigExampleService,
) {}

@Get('/')
public 'Get /'(): StarterConfig {
return this.configExampleService.getStarterConfig()
}
}
9 changes: 9 additions & 0 deletions apps/nest-demo/src/config-example/config-example.module.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import { Module } from '@nestjs/common'
import { ConfigExampleController } from './config-example.controller'
import { ConfigExampleService } from './config-example.service'

@Module({
controllers: [ConfigExampleController],
providers: [ConfigExampleService],
})
export class ConfigExampleModule {}
11 changes: 11 additions & 0 deletions apps/nest-demo/src/config-example/config-example.service.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import { StarterConfig } from '@142vip/nest-starter'

export class ConfigExampleService {
constructor(
private readonly starterConfig: StarterConfig,
) { }

public getStarterConfig(): StarterConfig {
return this.starterConfig
}
}
7 changes: 7 additions & 0 deletions apps/nest-demo/src/config.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import { NestAppConfig } from '@142vip/nest-starter'
import { IsNumber } from 'class-validator'

export class Config extends NestAppConfig {
@IsNumber()
test!: number
}
10 changes: 3 additions & 7 deletions apps/nest-demo/src/main.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,5 @@
import { NestFactory } from '@nestjs/core'
import { NestStarter } from '@142vip/nest-starter'
import { AppModule } from './app.module'

async function bootstrap(): Promise<void> {
const app = await NestFactory.create(AppModule)
await app.listen(3000)
}

void bootstrap()
// 统一启动类
void NestStarter.getInstance().start(AppModule)
19 changes: 19 additions & 0 deletions packages/nest-logger/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Changelog

All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.

## v0.0.1-alpha.1 (2025-02-06)

### ✨ Features

- 基础结构改造,引入`@142vip/utils`模块 &nbsp;-&nbsp; by **chufan** [<samp>(a0155)</samp>](https://github.com/142vip/core-x/commit/a01558e)

**Release New Version v0.0.1-alpha.1 [👉 View New Package On NPM](https://www.npmjs.com/package/@142vip/nest-logger)**

## v0.0.1-alpha.0 (2024-07-14)

### ✨ Features

- 新增`tsconfig`配置,统一模块编译 by . @chufan
- 基本结构初始化 by . @chufan
111 changes: 111 additions & 0 deletions packages/nest-logger/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
# @142vip/nest-logger

[![NPM version](https://img.shields.io/npm/v/@142vip/nest-logger?labelColor=0b3d52&color=1da469&label=version)](https://www.npmjs.com/package/@142vip/nest-logger)

## 安装

```shell
# npm
npm install @142vip/nest-logger
# pnpm
pnpm i @142vip/nest-logger
```

## 配置

## 日志注册

```typescript
NestLoggerModule.register({
consoleLogger: {
// ...
},
fileLogger: {
// ...
},
})
```

## 开启日志

```typescript
// app 实例,使用Logger
NestLoggerModule.useLogger(app)
```
## 日志打印

### 使用 `Logger` 类,不推荐

```typescript
import { Logger } from '@nestjs/common'

export class MyService {
private readonly logger = new Logger(MyService.name)
foo() {
this.logger.verbose({ foo: 'bar' }, 'baz %s', 'qux')
this.logger.debug('foo %s %o', 'bar', { baz: 'qux' })
this.logger.log('foo')
}
}
```

### 使用 `InjectLogger` 装饰器,推荐

```typescript
import { InjectLogger, NestLogger } from '@142vip/nest-logger'

export class MyService {
constructor(
private readonly logger: PinoLogger
) {
this.logger.setContext(MyService.name)
}

constructor(
@InjectLogger(MyService.name)
private readonly logger: NestLogger
) {}

foo() {
// PinoLogger has same methods as pino instance
this.logger.trace({ foo: 'bar' }, 'baz %s', 'qux')
this.logger.debug('foo %s %o', 'bar', { baz: 'qux' })
this.logger.info('foo')
}
}
```

### 构造函数初始化

```typescript
import { InjectLogger, NestLogger } from '@142vip/nest-logger'

export class MyService {
constructor(
private readonly logger: NestLogger
) {
this.logger.setContext(MyService.name)
}

foo() {
this.logger.trace({ foo: 'bar' }, 'baz %s', 'qux')
this.logger.debug('foo %s %o', 'bar', { baz: 'qux' })
this.logger.info('foo')
}
}
```

## 参考

- [nestjs-pino](npmjs.com/package/nestjs-pino)
- [pino](https://github.com/pinojs/pino)
- [pino-pretty](https://github.com/pinojs/pino-pretty)
- [pino-http](https://github.com/pinojs/pino-http)

## 证书

[MIT](https://opensource.org/license/MIT)

Copyright (c) 2019-present, @142vip 储凡

**仅供学习参考,商业使用请保留作者版权信息,作者不保证也不承担任何软件的使用风险。**
15 changes: 15 additions & 0 deletions packages/nest-logger/jest.config.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import { createDefaultPreset } from 'ts-jest'

const tsJestTransformCfg = createDefaultPreset().transform

/** @type {import("jest").Config} **/
export default {
testEnvironment: 'node',
transform: {
...tsJestTransformCfg,
},
testMatch: [
// "**/__tests__/**/*.[jt]s?(x)",
'**/test/**/?(*.)+(spec|test).[tj]s?(x)',
],
}
61 changes: 61 additions & 0 deletions packages/nest-logger/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
{
"name": "@142vip/nest-logger",
"version": "0.0.1-alpha.1",
"private": false,
"description": "Nest.js框架日志模块,集成终端、文件等形式日志",
"author": "mmdapl <mmdapl@163.com>",
"license": "MIT",
"homepage": "https://142vip.github.io/core-x/packages/nest-logger/",
"repository": {
"type": "git",
"url": "git+https://github.com/142vip/core-x.git",
"directory": "packages/nest-logger"
},
"keywords": [
"公众号搜:储凡",
"142vip",
"@142vip",
"@142vip/nest-logger",
"nest",
"logger"
],
"sideEffects": false,
"exports": {
".": {
"types": "./dist/index.d.ts",
"import": "./dist/index.js",
"require": "./dist/index.js"
}
},
"authorInfo": {
"name": "微信公众号:储凡",
"email": "fairy_vip@2925.com",
"url": "https://github.com/142vip",
"homePage": "https://142vip.cn"
},
"main": "./dist/index.js",
"module": "./dist/index.js",
"types": "./dist/index.d.ts",
"files": [
"dist"
],
"scripts": {
"build": "npx nest build",
"typecheck": "tsc --noEmit",
"test": "npx jest",
"test:coverage": "npx jest --coverage"
},
"peerDependencies": {
"@142vip/nest": "workspace:*"
},
"dependencies": {
"nestjs-pino": "4.4.1",
"pino": "9.4.0",
"pino-http": "11.0.0",
"pino-pretty": "11.3.0"
},
"publishConfig": {
"access": "public",
"registry": "https://registry.npmjs.org"
}
}
25 changes: 25 additions & 0 deletions packages/nest-logger/src/adapter/console.logger.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
import process from 'node:process'
import PinoPretty from 'pino-pretty'
import { LoggerLevelEnum, NestLoggerAdapter } from '../core/logger.interface'

export interface NestConsoleLoggerConfig extends PinoPretty.PrettyOptions {
level?: LoggerLevelEnum
}

/**
* 控制台日志
*/
export class ConsoleLogger implements NestLoggerAdapter {
private readonly stream: PinoPretty.PrettyStream

constructor(options: NestConsoleLoggerConfig) {
this.stream = PinoPretty({
...options,
destination: process.stdout,
})
}

public write(msg: string): void {
this.stream.push(msg)
}
}
1 change: 1 addition & 0 deletions packages/nest-logger/src/adapter/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export * from './console.logger'
6 changes: 6 additions & 0 deletions packages/nest-logger/src/core/logger.config.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import { NestConsoleLoggerConfig } from '../adapter/console.logger'

export class NestLoggerConfig {
fileLogger?: any
consoleLogger?: NestConsoleLoggerConfig
}
12 changes: 12 additions & 0 deletions packages/nest-logger/src/core/logger.decorator.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import { InjectPinoLogger, PinoLogger } from 'nestjs-pino'

/**
* 注册日志
*/
export function InjectLogger(context?: string): PropertyDecorator & ParameterDecorator {
return InjectPinoLogger(context)
}

export class NestLogger extends PinoLogger {

}
11 changes: 11 additions & 0 deletions packages/nest-logger/src/core/logger.interface.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
export interface NestLoggerAdapter {
write: (msg: string) => Promise<void> | void
}

export enum LoggerLevelEnum {
error = 'error',
warn = 'warn',
info = 'info',
debug = 'debug',
trace = 'trace',
}
Loading
Loading