2015-09-24 3 views
0

Я искал определение пользовательской службы для SysLog. В основном, внедрить службу регистрации третьей стороны (Papertrail). Его просто настроить.Syslog и Cloud Foundry/Bluemix

cf cups papertrail -l syslog://papertail_url:port

Казалось работать нормально, но я действительно не смотрел подробно, чтобы увидеть, если бревно «слива» правильно. И .. моя компания не позволит нам хранить журналы с третьей стороной. Итак ... Я написал собственный сервер SysLog и настроил службу пользователя, указывающую на мой сервер.

Журнал начал течь, но довольно быстро, мое чтение в сокете просто блокировалось бы на века .. тогда появятся еще некоторые данные .. но в нем отсутствовало много данных. Имейте в виду, что мое веб-приложение, выполняющее ведение журнала, тоже довольно просто .. и только создает несколько сообщений и stacktrace при преднамеренной ошибке.

Но проблема в том, что журнал просто не достаточно часто течет и когда он это делает ... он пропускает много данных.

Итак, я снова установил PaperTrail, чтобы узнать, был ли это мой код ... или нет. Но ... то же самое. Даже течет к PaperTrail не работает на 100%. Вы получаете некоторые сообщения журнала .. долго ждать .. то еще. И многое другое было упущено.

Похоже, что служба Loggerator Cloud Foundry Loggrator работает неправильно. Кто-нибудь испытал такую ​​проблему, как я? Это от BlueMix.

Примечание. Я прочитал, что вы пропустите сообщения, когда в течение короткого периода времени создается много сообщений журнала. Но здесь это не так. Я также проверил журналы Bluemix, чтобы узнать, есть ли сообщения о сбоях SysLog .. но я не мог найти их.

Заранее спасибо ...

ответ

1

Другие люди сообщили об этой же проблеме. В Loggregator произошел ряд изменений, чтобы попытаться решить эту проблему. Это активно работает.

Не могли бы вы открыть support ticket с этой информацией, и IBM сохранит ваше обновление?

+0

Цените информацию .. откроет билет. Благодаря! – James

1

Это известная проблема, которая находится под следствием со стороны IBM. К сожалению, на данный момент не существует обходного пути.

1

Я решил это вручную протоколирование в papertrail с использованием модулей Winston и Winston-papertrail

https://github.com/kenperkins/winston-papertrail

Редактирование, чтобы поделиться мой код по запросу

Моя реализация кода была очень простой, чтобы получить это работает вручную - я еще больше улучшу это. В основном я включил оба модуль Winston и Winston-papertrail в зависимости в моем package.json, а затем я создал следующий каротаж вспомогательного файл:

var winston = require('winston'); 

// 
// Requiring `winston-papertrail` will expose 
// `winston.transports.Papertrail` 
// 
require('winston-papertrail').Papertrail; 

var winstonPapertrail, logger; 

module.exports = { 
    init: function (hostname) { 
     return init(hostname); 
    }, 
    info: function (logText){ 
     return log(logText,"info"); 
    }, 
    error: function (logText){ 
     return log(logText,"error"); 
    }, 
    log: function(logText){ 
     return log(logText,"debug") 
    } 
} 

function init(program){ 
    winstonPapertrail = new winston.transports.Papertrail({ 
     host: <replacethiswithyourhostname> e.g.:'logsX.papertrailapp.com', 
     port: <replacethiswithyourport>, 
     program: program, 
     handleExceptions: true 
    }); 
    winstonPapertrail.on('error', function(err) { 
     // Handle, report, or silently ignore connection errors and failures 
    }); 

    logger = new winston.Logger({ 
     transports: [winstonPapertrail] 
    }); 

    log(hostname+" starting","info"); 
} 

function log(logText,level){ 
    if(level=="info"){ 
     console.info(logText); 
     logger.info(logText); 
    }else if(level=="error"){ 
     console.error(logText); 
     logger.error(logText); 
    }else if(level=="debug"){ 
     console.log(logText); 
     logger.debug(logText); 
    } 
} 

Я тогда сохранить это как файл JavaScript и импортировать его в мой главный appand затем можно как внешним, так и внутренним журналом сначала использовать открытый метод .init(), а затем .log, .info, .error и т. д.

Не очень элегантное решение, но оно работает на данный момент (например,я могу из внешнего журнала всех сообщений без потери)

James.

+0

Не могли бы вы добавить код здесь – Panther

+0

Уверенный - добавит его сегодня днем! Я не уверен, является ли это оптимальным решением, но оно все-таки появилось для меня. –

+0

Добавлено сейчас по запросу! –