2014-12-17 1 views
1

Я пытаюсь распечатать запрос sql, используя plv8.elog() в процедуре plv8.Как записать строку в процедуру postgres plv8?

plv8.elog(NOTICE, 'Notice:', str); 

Я не знаю, почему, но я не могу увидеть какой-либо вывод на консоли. Я искал возможное решение и нашел полезную информацию о том, что plv8 может печатать строку длиной до 512 символов. Ссылка приведена ниже.

http://code.google.com/p/plv8js/issues/detail?id=78

Для проверки этого я попытался напечатать ту же строку с str.slice

plv8.elog(NOTICE, 'Notice:', str.slice(0,512)); 

На этот раз я могу увидеть выход журнала, как и ожидалось. Может кто-нибудь, пожалуйста, предложите, как мы можем записать строку, содержащую более 512 символов?

+1

Как насчет разделить Ваше сообщение в строках, которые имеют максимум 512 символов и распечатать их все в отдельных уведомлениях? 'parts = str.match (/. {1,512}/g)' – pozs

+0

@pozs Спасибо за ваше предложение, пойдет на это в последнюю очередь, но было бы лучше, если бы мы могли переопределить поведение по умолчанию max 512 chars. – Anant

ответ

1

Я использую эту функцию:

var logMaxL = 90; 
function log() {//{{{ 
    var overflow = []; 
    var args = Array.prototype.slice.call(arguments, 0).map(function(arg, i){ 
     if (arg instanceof Object) arg = JSON.stringify(arg); 
     if (
      typeof arg == "string" 
      && arg.length > logMaxL 
     ) { 
      overflow[i] = arg.substring(50); 
      arg = arg.substring(0, 50); 
     }; 
     return arg; 
    }); 
    plv8.elog.apply(this, [NOTICE].concat(args)); 
    if (overflow.length) log.apply(this,overflow); 
};//}}} 

(Контекст. this Gist еще не обновлял сожалению)

Надежда может помочь ...