首先我关注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/