javascript - 如何: Extend the Aurelia Logger with additional methods

标签 javascript aurelia

首先我关注this example 关于实现和自定义 aurelia-logger。

这种方法效果很好。对自定义附加器中现有方法的任何更改都可以正常工作。但是,如果我将 CustomLogAppender.js 更改为

export class CustomLogAppender {
  constructor(){}
  debug(logger, message, ...rest){
    console.debug(`DEBUG [${logger.id}] ${message}`, ...rest);
  }
  info(logger, message, ...rest){
    console.info(`INFO [${logger.id}] ${message}`, ...rest);
  }
  warn(logger, message, ...rest){
    console.warn(`WARN [${logger.id}] ${message}`, ...rest); 
  }
  error(logger, message, ...rest){
    console.error(`ERROR [${logger.id}] ${message}`, ...rest);
  }
  newMethod(logger, message, ...rest){
    //whatever
  }
}

然后 logger.newMethod(“send error to backend”); 在 View 模型中调用时不是已定义的方法。 我正在尝试编写额外的日志记录方法,如果我认为有必要,可以将警告、信息、错误等发送到后端进行数据库日志记录,但在将这些方法添加到 aurelia-logger 时遇到问题。任何指导将不胜感激。

最佳答案

如果您遵循 URL 中的示例,则以下行与您相关:https://github.com/aurelia/logging/blob/21d92e79a5f924b25b1eae0648af5a7a0ab44527/src/index.js#L96-L115

如您所见,它创建了一个记录器,该记录器仅具有默认方法,即您返回的内容并不完全是您的记录器。您需要做的是增强现有的方法(在那里,您可以使用您的自定义方法)。

请参阅以下附加程序示例:

import { inject } from 'aurelia-framework';
import {HttpClient} from 'aurelia-http-client';
import {Logger} from 'aurelia-logging';

@inject(HttpClient)
export class ServerLogAppender {
    constructor(http) {
        this.http = http;
    }

    debug(logger, message, ...rest) {
        this.sendToServer(logger, message, ...rest);
    }

    info(logger, message,...rest){
        this.sendToServer(logger, message,...rest);
    }

    warn(logger, message,...rest){
        this.sendToServer(logger, message,...rest);
    }

    error(logger, message,...rest){
        this.sendToServer(logger, message,...rest);
    }

    sendToServer(logger, message,...rest){
        this.http.post('myerrorhandler', {
            url: window.location.href,
            source: logger.id,
            message: message,
            additional: rest.join('\r\n')
        });
    }
}

如您所见,默认方法(debug、info、warn、error)使用自定义方法 sendToServer()

关于javascript - 如何: Extend the Aurelia Logger with additional methods,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41448108/

相关文章:

c# - CefSharp JavaScript 注入(inject)

javascript - Aurelia 没有这样的文件或目录 aurelia-fetch-client.js

Aurelia - 外部需求

typescript - 将 TypeScript 目标更新为 ES6 时来自 aurelia-bundler 的 JS_Parse_Error

aurelia - 检测 router.isNavigating 的变化

javascript - 根据 Angular UI 网格中的字段值对行进行着色

javascript - 如何在不刷新的情况下显示php传递的结果给ajax

aurelia - 如何解决“尝试获取资源时发生TypeError:NetworkError。”

javascript - 如何将带有上下文菜单的展开所有按钮添加到 d3.js 树中

javascript - Firefox 屏幕共享 MediaStreamTrack 到 Twilio