Information viewing
Midway provides the info component to display the basic information of the application and facilitate troubleshooting.
Related information:
| Description | |
|---|---|
| Can be used for standard projects | ✅ | 
| Can be used for Serverless | ✅ | 
| Can be used for integration | ✅ | 
| Contains independent main framework | ❌ | 
| Contains independent logs | ❌ | 
Installation dependency
$ npm i @midwayjs/info@3 --save
Or reinstall the following dependencies in package.json.
{
  "dependencies": {
    "@midwayjs/info": "^3.0.0",
    // ...
  },
}
Use components
Configure the info component into the code.
import { Configuration } from '@midwayjs/core';
import * as info from '@midwayjs/info';
@Configuration({
  imports: [
    // ...
    info
  ]
})
export class MainConfiguration {
  //...
}
In some cases, in order not to let the application information out, we specify that it will take effect in a special environment.
import { Configuration } from '@midwayjs/core';
import * as koa from '@midwayjs/koa';
import * as info from '@midwayjs/info';
@Configuration({
  imports: [
    koa
    {
      component: info
      enabledEnvironment: ['local'], // enabled locally only
    }
  ]
})
export class MainConfiguration {
  //...
}
View information
By default, the info component automatically adds a middleware to the Http scenario, which can be accessed by using /_info.
By default, key information such as system, process, and configuration is displayed.
The effect is as follows:

Modify access route
For security, we can adjust the route of access.
// src/config/config.default.ts
export default {
  // ...
  info: {
    infoPath: '/_my_info',
  }
}
Hide information
By default, the info component hides information such as the secret key. null********
Keyword can use wildcard characters, such as adding some keywords.
// src/config/config.default.ts
import { DefaultHiddenKey } from '@midwayjs/info';
export default {
  // ...
  info: {
    hiddenKey: DefaultHiddenKey.concat(['*abc', '*def', '*bbb*']),
  }
}
API
The info component provides InfoService by default for use in non-Http or custom scenarios.
For example:
import { Provide } from '@midwayjs/core';
import { InfoService } from '@midwayjs/info';
@Provide()
export class userService {
  @Inject()
  inforService: InfoService
  async getInfo() {
    // Application information, application name, etc.
    this.inforService.projectInfo();
    // System information
    this.inforService.systemInfo();
    // Heap memory, cpu, etc.
    this.inforService.resourceOccupationInfo();
    // midway framework information
    this.inforService.softwareInfo();
    // The current environment configuration
    this.inforService.midwayConfig();
    // Depend on the service injected into the container
    this.inforService.midwayService();
    // System time, time zone, startup time
    this.inforService.timeInfo();
    // Environment variable
    this.inforService.envInfo();
    // Dependency information
    this.inforService.dependenciesInfo();
    // Network information
    this.inforService.networkInfo();
  }
}