我在使用log4js-protractor-appender时遇到麻烦 [英] I am finding trouble using log4js-protractor-appender

查看:188
本文介绍了我在使用log4js-protractor-appender时遇到麻烦的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的log4js.js文件代码

My log4js.js file code

'use strict';
var log4js = require('log4js');
var log4jsGen = {
    getLogger: function getLogger() {
        log4js.loadAppender('file');
        log4js.addAppender(log4js.appenders.file('./ApplicationLogs.log'), 'logs');

        var logger = log4js.getLogger('logs');
        return logger;
    }
};

module.exports = log4jsGen;

我的conf.js文件(仅适用于附加程序部分)

My conf.js file(specific to appender section only)

"appenders": [{
    "type": "log4js-protractor-appender",
    "append": 'false',
    "maxLogSize": 20480,
    "backups": 3,
    "category": "relative-logger"
}],

问题:

1)有没有一种方法可以在每次运行中覆盖日志. 2)为什么log4js-protractor-appender无法正常运行,而log4js却正常运行,前一个优点是它可以解决作为参数传递的promise.

1) IS there a way that the logs will get overwritten in each run. 2) Why log4js-protractor-appender is not working, instead log4js is working, the merit of the previous is that it resolves the promises which is passed as an argument.

推荐答案

那是一个很好的问题.是 log4js-protractor-appender 很棒.它是专门为基于量角器的环境而构建的,它将所有记录器命令放置在量角器控制"流中,并在记录之前解决了量角器的承诺.

Thats a great question. Yes log4js-protractor-appender is awesome. It is built specially for Protractor based environments and it places all logger command in Protractor Control flow and resolves Protractor promises before logging.

您使用不正确.追加器选项不是量角器配置选项的一部分,但可以集成.您使用的方法有些陈旧,我已经通过

You were using it incorrectly. The appender options are not part of Protractor config options but can be integrated. The approach you have is a little old one and I have updated by blog post

这些是回答问题2的步骤

These are the steps as an answer to your question-2

步骤1:安装 log4js npm模块

第2步:安装 log4js-protractor-appender模块

第3步:在量角器beforeLaunch()中添加记录器对象创建逻辑并将其分配给浏览器量角器全局对象

Step 3: Add the logger object creation logic in protractor beforeLaunch() and assign it onto ​​browser protractor global object

'use strict';
var log4js = require('log4js');
beforeLaunch:function(){
    if (fs.existsSync('./logs/ExecutionLog.log')) {
        fs.unlink('./logs/ExecutionLog.log')
    }
    log4js.configure({
        appenders: [
            { type: 'log4js-protractor-appender', category: 'protractorLog4js' },
            {
                type: "file",
                filename: './logs/ExecutionLog.log',
                category: 'protractorLog4js'
            }
        ]
    });
},
onPrepare: function() {
    browser.logger = log4js.getLogger('protractorLog4js');
},

第4步:通过browser.logger进行访问,在测试中使用logger对象

Step 4: Use logger object in your tests by accessing through browser.logger

describe('sample test', function(){
    it('Sample Check', function(){
        browser.get("http://www.protractortest.org/#/");
        browser.logger.info("Testing Log4js");
        browser.sleep(5000);
        browser.logger.info('Displayed text is:', browser.getCurrentUrl());
        var elm = element(by.css('.lead'))
        browser.logger.info('Displayed text is:', elm.getText());
    });
});

但是要注意的一件事是-该追加器只是一个控制台追加器,将无法写入文件.该文件仍将包含未解决的承诺

But one thing to note is - This appender is just an console appender and will not be able to write to file. The file will still contain unresolved promises

样本输出:

[21:54:23] I/local - Starting selenium standalone server...
[21:54:23] I/launcher - Running 1 instances of WebDriver
[21:54:25] I/local - Selenium standalone server started at http://192.168.1.5:60454/wd/hub
Started
[2017-02-03 21:54:30.905] [INFO] protractorLog4js - Testing Log4js
[2017-02-03 21:54:35.991] [INFO] protractorLog4js - Displayed text is: http://www.protractortest.org/#/
[2017-02-03 21:54:36.143] [INFO] protractorLog4js - Displayed text is: Protractor is an end-to-end test framework for Angular and AngularJS applications. Protractor runs tests against your application running in a real browser, interacting with it as a user would.
.

回答您的问题1:如何覆盖每次运行的日志.我在beforeLaunch()中添加了一个简单的逻辑以删除旧日志(如果它们存在的话)及其上面粘贴的代码段的一部分

Answer to your Question 1: How to overwrite logs each run. I added a simple logic in beforeLaunch() to delete old logs if they exist and its part of the code snippet I pasted above

这篇关于我在使用log4js-protractor-appender时遇到麻烦的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆