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();
}
}