PhantomJS / [removed] write to file instead of to console

前端 未结 3 1683
遥遥无期
遥遥无期 2021-02-01 04:45

From PhantomJS, how do I write to a log instead of to the console?

In the examples https://github.com/ariya/phantomjs/wiki/Examples, it always (in the ones I have looked

相关标签:
3条回答
  • 2021-02-01 05:12

    You can override original console.log function, take a look at this :

    Object.defineProperty(console, "toFile", {
        get : function() {
            return console.__file__;
        },
        set : function(val) {
            if (!console.__file__ && val) {
                console.__log__ = console.log;
                console.log = function() {
                    var fs = require('fs');
                    var msg = '';
                    for (var i = 0; i < arguments.length; i++) {
                        msg += ((i === 0) ? '' : ' ') + arguments[i];
                    }
                    if (msg) {
                        fs.write(console.__file__, msg + '\r\n', 'a');
                    }
                };
            }
            else if (console.__file__ && !val) {
                console.log = console.__log__;
            }
            console.__file__ = val;
        }
    });
    

    Then you can do this:

    console.log('this will go to console');
    console.toFile = 'test.txt';
    console.log('this will go to the test.txt file');
    console.toFile = '';
    console.log('this will again go to the console');
    
    0 讨论(0)
  • 2021-02-01 05:16

    So I figured it out:

    >phantomjs.exe file_to_run.js > my_log.txt
    
    0 讨论(0)
  • 2021-02-01 05:31

    The following can write contents to the file directly by phantomjs:

    var fs = require('fs');
       try {
        fs.write("/home/username/sampleFileName.txt", "Message to be written to the file", 'w');
        } catch(e) {
            console.log(e);
        }
        phantom.exit();
    

    The command in the answer by user984003 fails when there is some warning or exceptions occurred. And sometimes does not fall into our specific requirements because in some codebase I am getting the following message always which will also be logged to that file.

    Refused to display document because display forbidden by X-Frame-Options.
    
    0 讨论(0)
提交回复
热议问题