我正在构建一个erlang应用程序,并使用lager——一个由Basho技术编写的日志框架。
我想将日志输出发送到Papertrail,否则将发送Loggly。
有人能给我一些关于如何配置的指导吗?
我本来打算建议使用lager
syslog
适配器,并将其配置为与Papertrail或Loggly的syslog输入对话,但Basho syslog适配器只登录到localhost。
但是,一切都没有丢失,您可以将较大的syslog适配器配置为使用已知的工具在同一台机器上对syslog ng或rsyslog进行日志记录,并让该syslog守护进程将日志发送到Papertrail。Papertrail有一个系统日志配置指南,它将告诉您如何配置系统日志服务器。
我建议在较大的syslog适配器中使用local0
之类的功能,然后像这样配置rsylog:
local0.* @logs.papertrailapp.com:1234
syslog-ng
配置更为复杂:
filter f_erlang { facility(local0); };
destination d_papertrail {
udp("logs.papertrailapp.com" port(514));
};
log { source(s_local); filter(f_erlang); destination(d_papertrail); };
正如@archaelus所说,目前没有支持远程协议的lager
系统日志适配器。
另一种方法似乎是使用lager
来登录到文件:
{lager, [
{handlers, [
{lager_file_backend, [{file, "info.log"}, {level, info}]}
]}
然后使用remote_syslog2
转发此日志文件Papertrail。
为此,请下载并安装最新的remote_syslog2二进制文件(说明)。
添加一个/etc/log_files.yml
配置文件,其中包含:
files:
- /path/to/your/app/log/info.log
destination:
host: logs.papertrailapp.com
port: 1234
protocol: tls
pid_file: /var/run/remote_syslog.pid
最后是remote_syslog2 deamon:sudo remote_syslog
您还可以查看Papertrail为集中Erlang日志而创建的文档页面。
对于Loggly,有一个专用的Lager适配器:Lager_Loggly。