我有一个应用程序服务器(Ubuntu 14.04),上面运行着 tomcat 服务器。这个相同的应用程序服务器由“ rsyslog ”服务器组成,该服务器被配置为将日志发送到NXlog服务器(在 Ubuntu 14.04 上)。
rsyslog 服务器将其所有日志(包括 tomcat 错误、异常和堆栈跟踪)发送到 syslog 服务器,但问题在于多行日志。当日志消息存储在文件中或在没有任何封装的情况下通过网络转发时,跨越多行的消息中出现的换行符会混淆简单的基于行的解析器,这些解析器将每一行视为一个单独的事件;&因此我的异常日志在新行中被破坏。
我的 rsyslog 版本是:7.4.4
rsyslog.conf 文件如下所示:
#################
#### MODULES ####
#################
$EscapeControlCharactersOnReceive off
$LocalHostName nishant-app
$ModLoad imuxsock # provides support for local system logging
$ModLoad imklog # provides kernel logging support (previously done by rklogd)i
#$ModLoad immark # provides --MARK-- message capability
$ModLoad imfile
$ModLoad omrelp
#$ModLoad omhdfs
# provides UDP syslog reception
#$ModLoad imudp
#$UDPServerRun 514
# provides TCP syslog reception
#$ModLoad …Run Code Online (Sandbox Code Playgroud) 在heroku日志中,我有以下一行...
Aug 06 21:50:18 coolApp heroku/router: at=info method=GET path="/about.jpg" host=coolapp.com fwd="78.7.88.177,643.198.55.55" dyno=web.1 connect=0ms service=43ms status=500 bytes=420
Run Code Online (Sandbox Code Playgroud)
我的问题是fwd代表什么?我看到它们是IP地址。他们是用户的IP地址吗?
我正在使用 Windows AMI 来启动托管 java 应用程序的实例。我使用 papertrail 进行日志记录,它使用计算机的名称来显示与日志流关联的系统。现在计算机的名称是一个自动生成的值,但我想给它一个特定的值。我怎样才能做到这一点?
无法在 AMI 上设置名称,因为我使用相同的 AMI 来启动多个实例,而这些实例都必须具有不同的计算机名称。
结论
最后,由于我主要关心的是为了 papertrail 而更改名称,我可以通过http://help.papertrailapp.com/kb/configuration/java-logback-logging/来做到这一点 谢谢大家的帮助
我有一个 Django 应用程序,我托管在 Heroku 上,并通过 Papertrail Heroku 附加组件登录到 Papertrail。我在很多地方直接将信息记录到 Papertrail,目前通过:
logger = logging.getLogger('papertrail')
logger.info('important text')
Run Code Online (Sandbox Code Playgroud)
我根据此链接设置日志记录配置:
import sys
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'handlers': {
'console': {
'level': 'INFO',
'class': 'logging.StreamHandler',
'stream': sys.stdout,
},
},
'loggers': {
'django': {
'handlers': ['console'],
'level': 'ERROR',
},
'papertrail': {
'handlers': ['console'],
'level': 'INFO',
},
},
}
Run Code Online (Sandbox Code Playgroud)
总之,这会像这样记录到 Papertrail:
Feb 07 06:10:56 app_name app/worker.1: important text
Run Code Online (Sandbox Code Playgroud)
但是,我注意到 usingprint('important text')在这里完成了同样的事情。在这种情况下继续使用loggingoverprint来记录“重要文本”有什么好处吗?我通读了这篇文章,似乎没有一条适用于此。