2017-01-03 2 views
0

먼저 aurelia-logger를 구현하고 사용자 정의하는 데 this example 을 따르고 있습니다.방법 : 추가 방법으로 Aurelia 로거 확장하기

이 접근 방식은 정상적으로 작동합니다. 사용자 정의 appender의 기존 메소드에 대한 변경 사항은 정상적으로 작동합니다. 내가

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 
    } 
} 

에 CustomLogAppender.js을 변경하는 경우에는 다음 logger.newMethod(“send error to backend”);는 뷰 - 모델에서 호출 정의 된 방법은 없습니다. 데이터베이스 로깅을 위해 경고, 정보, 오류 등을 백엔드에 보낼 수있는 추가 로깅 메소드를 작성하려고하는데, 필자는이 메소드를 aurelia-logger에 추가하는 데 문제가 있다고 생각합니다. 모든 지침을 부탁드립니다.

답변

1

당신이 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') 
     }); 
    } 
} 

가 기본 방법 (디버그, 정보, 경고, 오류) 사용자 지정 방법 sendToServer()를 사용합니다.