使用angular2-logger显示行号和文件名

时间:2017-12-13 10:13:21

标签: angular

我在我的项目中使用Angular2-logger

"{Timestamp:HH:mm:ss} [{Level:u3}] {Message}{NewLine}{Exception}"

输出打印在控制台中,如下图

enter image description here

Angular2-logger 或替代类中是否有任何选项可用于显示文件名行号的位置我&# 39; m调用 logger 方法? (与import { Logger } from "angular2-logger/core"; ... logger: Logger; ... logger.info('<log string>') 相同,如图像波纹管)

enter image description here

有没有解决方案?

3 个答案:

答案 0 :(得分:4)

我建议您 not use logger libraries ,原因有两个

  • 当angular提供默认值时。
  • 这些库不依赖于版本更新。

当我们记录前端的错误(即浏览器环境)时,您可以制作自定义记录器服务。

关于您提到的问题,您可以根据您需要的环境,通过 usevalue 覆盖服务,使用空类/函数来关闭日志。

答案 1 :(得分:1)

我通过这种方式找到了解决方案:

1-我创建了LoggerService

2-我将服务导入app.module.ts并将其用作提供者。

3- LoggerService看起来像这样:

import { Injectable } from '@angular/core';

@Injectable()
export class LoggerService {
    public error(message) {
        try { throw new Error(); } catch (e) {
            console.log(e.stack);
            const stackTraces = e.stack.split('at');
            const fileList = stackTraces[2].substr(
                stackTraces[2].lastIndexOf('/src'),
                stackTraces[2].length - 1 ).replace(')', ''
            );
            const functionName = stackTraces[2].substr(0, stackTraces[2].indexOf('(') - 1);

            // Do whatever you want, use console.log or angular2-logger service
            console.log(message);
        }
    }
}

答案 2 :(得分:0)

您正在使用Logger的info方法,该方法最简洁。没有办法按照您想要的方式配置它。另一种方法是使用errorwarning方法 - 它们提供带有文件名和行号的堆栈跟踪。

Logs in console from Angular2-logger methods