От PhantomJS, как мне писать в журнал вместо консоли?
В примерах https://github.com/ariya/phantomjs/wiki/Examples он всегда (в тех, на которые я смотрел) говорит что-то вроде:
console.log('some stuff I wrote');
Это не так полезно.
От PhantomJS, как мне писать в журнал вместо консоли?
В примерах https://github.com/ariya/phantomjs/wiki/Examples он всегда (в тех, на которые я смотрел) говорит что-то вроде:
console.log('some stuff I wrote');
Это не так полезно.
Итак, я понял:
>phantomjs.exe file_to_run.js > my_log.txt
Следующие могут записывать содержимое в файл непосредственно с помощью 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();
Команда в ответе user984003 терпит неудачу при возникновении какого-либо предупреждения или исключений. И иногда это не относится к нашим конкретным требованиям, потому что в некоторой кодовой базе я всегда получаю следующее сообщение, которое также будет записано в этот файл.
Refused to display document because display forbidden by X-Frame-Options.
Вы можете переопределить исходную функцию console.log, посмотрите на это:
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;
}
});
Затем вы можете сделать это:
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');