Javascript 用于单元测试和 运行 基于浏览器的网络应用程序的日志记录设置

Javascript logging setup for unit testing and running browser based web app

我只在客户端工作javascript 网络应用程序。我正在使用 log4javascript 来记录应用程序功能,而 运行 在本地服务器上,因为我无法让 log4javascript 在单元测试期间工作(在 Jasmine+Karma 或 Mocha 中) ,我使用 log4js 进行日志记录,而 运行 使用 Mocha 在 Node 上进行单元测试。

为了在正常的 webb 应用程序期间记录 运行 我从 html 页面创建了 log4javascript 记录器(因为我想不出任何方法来从 javascript.js 文件)使用:

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

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

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

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

logger.debug("functionName message");

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

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

关于如何覆盖 console.log 的一个很好的例子可以在这里找到:http://seanmonstar.com/post/56448644049/consolelog-all-the-things