Logging Syslog和Cloud Foundry/Bluemix
我一直在研究为SysLog定义一个用户服务。基本上,实现第三方日志记录服务(Papertrail)。设置起来很简单Logging Syslog和Cloud Foundry/Bluemix,logging,cloud-foundry,ibm-cloud,syslog,Logging,Cloud Foundry,Ibm Cloud,Syslog,我一直在研究为SysLog定义一个用户服务。基本上,实现第三方日志记录服务(Papertrail)。设置起来很简单 cf cups纸质文件-lsyslog://papertail_url:port 它似乎工作正常,但我并没有真正详细地查看日志是否正常“排水”。和。。我的公司不允许我们与第三方存储日志。所以我编写了自己的SysLog服务器,并设置了一个指向我的服务器的用户服务 日志开始流动,但很快,我在套接字上的读取就会阻塞很长时间。。然后会有更多的数据进来。。但在这两者之间,它丢失了很多数据。请
cf cups纸质文件-lsyslog://papertail_url:port
它似乎工作正常,但我并没有真正详细地查看日志是否正常“排水”。和。。我的公司不允许我们与第三方存储日志。所以我编写了自己的SysLog服务器,并设置了一个指向我的服务器的用户服务
日志开始流动,但很快,我在套接字上的读取就会阻塞很长时间。。然后会有更多的数据进来。。但在这两者之间,它丢失了很多数据。请记住,我做日志记录的Web应用程序也很简单,只会生成一些消息和故意错误的堆栈跟踪
但问题是,日志的流量不够频繁,一旦出现,就会丢失大量数据
所以,我再次建立了书面记录,看看这是不是我的密码。。。或者不是。但是相同的。即使流向书面记录也不能100%起作用。你会收到一些日志消息。。漫长的等待。。然后再来一些。还有更多的人被错过了
这里的CloudFoundry Loggregator服务似乎不太正常。有没有人经历过像我这样的问题?这是BlueMix的
注意:我确实读到过,在短时间内创建许多日志消息时,您将错过消息。。但事实并非如此。我还检查了我的Bluemix日志,看看是否有任何关于系统日志失败的消息。。但是我找不到
提前感谢…其他人也报告了同样的问题。为了解决这个问题,Loggregator做了很多更改。这项工作正在积极进行中
您能否打开一个包含此信息的应用程序,IBM将不断更新您的信息?其他人也报告了相同的问题。为了解决这个问题,Loggregator做了很多更改。这项工作正在积极进行中
您能否打开一个包含此信息的应用程序,IBM将不断更新您的信息?其他人也报告了相同的问题。为了解决这个问题,Loggregator做了很多更改。这项工作正在积极进行中
您能否打开一个包含此信息的应用程序,IBM将不断更新您的信息?其他人也报告了相同的问题。为了解决这个问题,Loggregator做了很多更改。这项工作正在积极进行中
您能否打开一个包含此信息的应用程序,IBM将不断更新您的信息?这是IBM正在调查的一个已知问题。不幸的是,目前没有任何解决办法。这是IBM正在调查的已知问题。不幸的是,目前没有任何解决办法。这是IBM正在调查的已知问题。不幸的是,目前没有任何解决办法。这是IBM正在调查的已知问题。不幸的是,目前没有任何解决办法。我通过使用winston和winston papertrail模块手动登录到papertrail解决了这个问题 编辑以根据请求共享我的代码 我的代码实现非常基本,可以手动实现,我将进一步增强它。基本上,我将winston和winston papertrail两个模块都包含在my 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);
}
}
var winston=require('winston');
//
//要求“温斯顿书面记录”会暴露
//“温斯顿,运输公司,文书记录`
//
要求(“温斯顿书面记录”)。书面记录;
var winstonPapertrail,记录器;
module.exports={
初始化:函数(主机名){
返回init(主机名);
},
信息:功能(日志文本){
返回日志(日志文本,“信息”);
},
错误:函数(logText){
返回日志(日志文本,“错误”);
},
日志:函数(logText){
返回日志(日志文本,“调试”)
}
}
函数初始化(程序){
winston Papertrail=新的winston.transports.Papertrail({
主持人:例如:“logsX.papertrailap.com”,
端口:,
节目:节目,,
handleExceptions:true
});
winstonPapertrail.on('error',函数(err){
//处理、报告或静默忽略连接错误和故障
});
记录器=新的winston.logger({
运输:[温斯顿文书记录]
});
日志(主机名+开始”,“信息”);
}
功能日志(日志文本,级别){
如果(级别=“信息”){
控制台信息(日志文本);
logger.info(logText);
}否则如果(级别=“错误”){
控制台错误(日志文本);
logger.error(logText);
}else if(级别=“调试”){
console.log(logText);
logger.debug(logText);
}
}
然后,我将其保存为一个javascript文件,并将其导入主appand,然后可以通过首先使用exposed.init()方法,然后使用.log、.info、.error等在外部和内部进行日志记录
我确信这不是一个非常优雅的解决方案,但它目前正在发挥作用(例如,我可以在外部记录所有消息,而不会丢失任何消息)
James。我通过使用winston和winston papertrail模块手动登录到papertrail解决了这个问题 编辑以根据请求共享我的代码 我的代码实现非常基本,可以手动实现,我将进一步增强它。基本上,我将winston和winston papertrail两个模块都包含在my 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);
}
}
var winston=require('winston');
//
//要求“温斯顿书面记录”会暴露
//“温斯顿,运输公司,文书记录`
//
要求(“温斯顿书面记录”)。书面记录;
var winstonPapertrail,记录器;
module.exports={
初始化:函数(主机名){
返回init(主机名);
},
信息:功能(日志文本){
返回日志(日志文本,“信息”);
},
错误:函数(logText){
返回日志(l