Loopbackjs 如何将morgan添加到环回4重新应用程序?

Loopbackjs 如何将morgan添加到环回4重新应用程序?,loopbackjs,loopback4,Loopbackjs,Loopback4,我只是想添加morgan来记录我的http呼叫。我尝试过的两种方法是: 将其添加到MySequence类: 在调用application.ts文件中的this.sequence(MySequence)之前添加它: 第一种方法在我从以下位置更新环回依赖项之前起作用: "@loopback/boot": "^2.4.1", "@loopback/core": "^2.9.3", "@loopback/repos

我只是想添加morgan来记录我的http呼叫。我尝试过的两种方法是:

  • 将其添加到MySequence类:
  • 在调用
    application.ts
    文件中的
    this.sequence(MySequence)
    之前添加它:
  • 第一种方法在我从以下位置更新环回依赖项之前起作用:

    "@loopback/boot": "^2.4.1",
    "@loopback/core": "^2.9.3",
    "@loopback/repository": "^2.11.0",
    "@loopback/rest": "^6.0.0",
    "@loopback/rest-explorer": "^2.2.8",
    "@loopback/service-proxy": "^2.3.6",
    
    致:

    很明显,更新做了一些事情,使它停止工作,但我不知道是什么


    此外,我在文档中也看到了其他方法,比如使用拦截器的方法,但当它应该像在Express应用程序中添加中间件一样简单时,我觉得这是一种过分的做法。

    请将您的更改还原到
    MySequence.ts
    。以下几点就足够了:

    export class MySequence extends MiddlewareSequence {
    }
    
    您应该知道,使用此注册的morgan中间件。expressMiddleware将由
    MiddlewareSequence
    自动发现

    请参阅以下站点的工作示例:


    请将更改还原到
    MySequence.ts
    。以下几点就足够了:

    export class MySequence extends MiddlewareSequence {
    }
    
    您应该知道,使用此注册的morgan中间件。expressMiddleware将由
    MiddlewareSequence
    自动发现

    请参阅以下站点的工作示例:


    我使用了Raymond的示例,但必须从config对象中删除stream.write函数才能使其正常工作。使用这个示例,我可以看到中间件正在注册,但仍然无法看到Morgan的日志

    只需将
    defaultConfig
    对象留空:

    private setupLogging() {
        const morganFactory = (config?: morgan.Options<Request, Response>) => {
          this.debug('Morgan configuration', config);
          return morgan('combined', config);
        };
    
        const defaultConfig: morgan.Options<Request, Response> = {};
    
        this.expressMiddleware(morganFactory, defaultConfig, {
          injectConfiguration: 'watch',
          key: 'middleware.morgan',
        });
    }
    
    private setupLogging(){
    const morganFactory=(配置?:morgan.Options)=>{
    debug('Morgan configuration',config);
    返回摩根('组合',配置);
    };
    const defaultConfig:morgan.Options={};
    此.expressMiddleware(morganFactory、defaultConfig、{
    配置:“监视”,
    键:'中间件.摩根',
    });
    }
    
    我使用了Raymond的示例,但必须从config对象中删除stream.write函数才能使其正常工作。使用这个示例,我可以看到中间件正在注册,但仍然无法看到Morgan的日志

    只需将
    defaultConfig
    对象留空:

    private setupLogging() {
        const morganFactory = (config?: morgan.Options<Request, Response>) => {
          this.debug('Morgan configuration', config);
          return morgan('combined', config);
        };
    
        const defaultConfig: morgan.Options<Request, Response> = {};
    
        this.expressMiddleware(morganFactory, defaultConfig, {
          injectConfiguration: 'watch',
          key: 'middleware.morgan',
        });
    }
    
    private setupLogging(){
    const morganFactory=(配置?:morgan.Options)=>{
    debug('Morgan configuration',config);
    返回摩根('组合',配置);
    };
    const defaultConfig:morgan.Options={};
    此.expressMiddleware(morganFactory、defaultConfig、{
    配置:“监视”,
    键:'中间件.摩根',
    });
    }
    
    将更改还原到
    MySequence.ts
    下面的示例中,我可以看到morgan在使用debug时注册为中间件,但仍然不会打印HTTP调用。将更改还原到
    MySequence.ts
    下面的示例中,我可以看到morgan在使用debug时注册为中间件,但仍然是不会打印出HTTP调用。
    private setupLogging() {
        const morganFactory = (config?: morgan.Options<Request, Response>) => {
          this.debug('Morgan configuration', config);
          return morgan('combined', config);
        };
    
        const defaultConfig: morgan.Options<Request, Response> = {};
    
        this.expressMiddleware(morganFactory, defaultConfig, {
          injectConfiguration: 'watch',
          key: 'middleware.morgan',
        });
    }