0

我正在仅在客户端处理 javascript Web 应用程序。我在本地服务器上运行时使用 log4javascript 记录应用程序功能,因为在单元测试期间我无法让 log4javascript 工作(在 Jasmine+Karma 或 Mocha 中),我在 Node 上运行单元测试时使用 log4js 进行记录摩卡。

要在正常的 webb 应用程序运行期间进行日志记录,我使用以下方法从 html 页面创建 log4javascript 记录器(因为我无法弄清楚从 javascript.js 文件创建 glogal 记录器的任何方法):

<script src="{{ url_for('static', filename='js/log4javascript.js') }}" type="text/javascript"></script>
<script type="text/javascript">
    var logger = log4javascript.getDefaultLogger();
</script> 

因为我想在单元测试期间登录到控制台,所以我需要在运行正常 Web 应用程序期间登录的相同 javascript.js 文件中设置 log4js。IE:

var log4js = require('log4js');
log4js.configure({
    appenders: [
        {
            "type": "logLevelFilter",
            "level": "DEBUG",
            "appender":
            {
                "type": "console"
            }
        }
    ]
});
var logger = log4js.getLogger();

然后从内部函数我可以使用:

logger.debug("functionName message");

这在从 log4javascript 和 log4js 记录时会起作用,但这很混乱,因为我在每个 javascript 文件中都有 require('log4js') 语句(在浏览器上运行时似乎被忽略),并且记录器有两种含义。在开发基于浏览器的 javascript 期间是否有更好的方法来使用日志记录?

4

1 回答 1

0

我最终在应用程序代码中使用了 console.log 并使用 winston 记录器进行单元测试。

可以在此处找到如何覆盖 console.log 的一个很好的示例:http: //seanmonstar.com/post/56448644049/consolelog-all-the-things

于 2016-01-23T05:34:52.370 回答