在Protractor中配置log4js-protractor-appender时遇到报错
解决Protractor配置log4js-protractor-appender时的报错问题
首先看你贴的Conf.js代码,能发现一个致命语法错误:你把var log4js = require('log4js')写在了exports.config这个对象内部,这是不允许的——JavaScript对象里只能定义键值对属性,不能直接放置变量声明语句,这会直接导致语法解析失败。
下面给你一套完整的正确配置流程:
第一步:确保依赖安装正确
先在项目根目录执行命令,安装所需的两个包:
npm install log4js log4js-protractor-appender --save-dev
第二步:修正Conf.js的配置结构
把require语句移到文件最顶部,然后在onPrepare钩子函数里完成log4js的配置(因为Protractor在启动时会执行onPrepare里的代码,适合初始化日志工具)。完整的Conf.js示例如下:
// 先在文件顶部引入依赖 const log4js = require('log4js'); const log4jsProtractorAppender = require('log4js-protractor-appender'); exports.config = { directConnect: true, capabilities: { 'browserName': 'chrome' }, framework: 'jasmine', specs: ['test_spec1.js'], jasmineNodeOpts: { defaultTimeoutInterval: 30000 }, // 核心:在onPrepare里配置log4js onPrepare: function() { // 配置log4js log4js.configure({ appenders: { // 配置protractor专用的appender protractor: { type: log4jsProtractorAppender, layout: { type: 'pattern', pattern: '%d{ISO8601} [%level] %message' } } }, categories: { default: { appenders: ['protractor'], level: 'info' } } }); // 可以把logger挂载到全局,方便在spec文件里直接使用 global.logger = log4js.getLogger(); } };
第三步:在测试用例中使用日志
比如在test_spec1.js里这样调用:
describe('Sample Test', function() { it('should log messages', function() { logger.info('这是一条info级别的日志'); logger.debug('这是一条debug级别的日志'); logger.error('这是一条error级别的日志'); // 执行测试步骤 browser.get('https://www.google.com'); }); });
可能遇到的其他问题排查
- 如果遇到版本兼容问题:log4js v3+的配置语法和旧版本略有不同,如果你安装的是v3以上版本,确保配置格式和上面示例一致;如果是v2版本,可能需要调整
appenders的写法。 - 日志不输出:检查
categories里的level设置,比如如果设置成error,info和debug级别的日志就不会输出,根据需求调整级别(trace < debug < info < warn < error < fatal)。
内容的提问来源于stack exchange,提问作者Kushal Bhalaik
相关产品推荐
相关产品推荐

