最重要的是我关注this example 关于实施和定制aurelia-logger。
这种方法只能正常工作。对自定义appender中现有方法的任何更改都可以正常工作。但是,如果我将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”);
在视图模型中调用时不是定义的方法。
我正在尝试编写其他日志记录方法,如果我认为有必要,可以将警告,信息,错误等发送到后端进行数据库日志记录,但是在将这些方法添加到aurelia-logger时遇到了问题。任何指导将不胜感激。
答案 0 :(得分:1)
如果您关注网址中的示例,则以下行与您的相关:https://github.com/aurelia/logging/blob/21d92e79a5f924b25b1eae0648af5a7a0ab44527/src/index.js#L96-L115
正如您所看到的,它创建了一个记录器,它只有默认方法,即您返回的内容并不完全是您的记录器。您需要做的是增强现有方法(在那里,您可以使用自定义方法)。
以下面的appender为例:
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()
。