![83678e29379d6e70fb716198023b05f5.png](https://i-blog.csdnimg.cn/blog_migrate/52ef46f257724347e44256baed1fb25f.jpeg)
1. 创建loggly账号,申请自己的log子域:
打开官网:https://www.loggly.com/
![44222090ccc1b29b72039642561237b1.png](https://i-blog.csdnimg.cn/blog_migrate/7d693f0b89768a8713ee9ca11e0299a8.jpeg)
![1ad7e52f659e51f56a5233fed7a0e992.png](https://i-blog.csdnimg.cn/blog_migrate/f0cd674fb436410491f5a065431484ae.jpeg)
申请账号之类的基本上不会有什么问题,不再细述,主要介绍下有服务器上安装使用loggly服务时遇到的问题:
2. 本地安装loggly服务
官方log算是比较健全的:https://www.loggly.com/docs/docker-logging-logspout/
Loggly功能确实挺全面的,能够支持多种log记录方式,包括记录linux系统日志(syslog),docker系统日志(syslog),还可以通过java的log4j配置,可选择http/s和syslog方式把log记录到http://loggly.com等等。
众多log记录方式各有各的缺点,比如:
1) 系统日志syslog方式记录是只支持单行记录的,如果你有一个Exception抛出来打了一大段log,它记录到loggly上会是把一大段拆成单行的,很不便于追踪excption。
2) http/s的方式虽然支持多行作为一条log记录,但是又无法识别中文,更重要的是http/s方式是在接口请求的时候只要有log就先发送Log到http://loggly.com,然后才返回接口请求,严重影响接口性能,万万不可取。
3) 最后发现一种可以兼顾两种情况的loggly记录方法,那就是:Docker logging through Logspout,可以从官方文档的如下目录看到详细的安装步骤,其实安装很简单,就是使用文档上的命令启动一个loggly指定的docker。
![bf216648935cf46eb9008fe0e488aab4.png](https://i-blog.csdnimg.cn/blog_migrate/c60670d744e6ad739818305e4d51ab73.jpeg)
不过默认的Docker logging through Logspout方式也是不支持单条记录多行log的,需要使用它的Multiline Support模式才可以:
(1) 启动logspout
docker run --name logspout -d --volume=/var/run/docker.sock:/var/run/docker.sock -e SYSLOG_STRUCTURED_DATA="TOKEN@41058 tag="Logspout"" gliderlabs/logspout multiline+syslog+tcp://http://logs-01.loggly.com:514
token需要替换成自己的真实token,token生成:
![34df9ecfd4629964014dffd77334f22a.png](https://i-blog.csdnimg.cn/blog_migrate/79f0a39a3c124824804b70f691de2d40.png)
这个命令会启动一个docker容器用来监控当前宿主机,会将当前宿主机上所有docker的syslog都发送到http://loggly.com记录。可以通过docker ps命令来查看你的loggly docker是否启动成功:
![5f1e32bd6a5777c4bc9457bcf5bb5eab.png](https://i-blog.csdnimg.cn/blog_migrate/5d080f45bdc9cb50b6651b6292e9a185.png)
(2)某一个容器log不想记录
看到名字为logspout的容器名,就表示已经启动成功了,启动成功后该容器就会把当前宿主机上所有其他容器的syslog推送到http://loggly.com了,除非你的容器使用了docker run -t启动的,如果是使用-t启动的容器,logspout就无法获取它的syslog,所以如果你某个宿主机已经开启了logspout,而你又不希望某个容器的log记录到http://loggly.com的时候,就可以在容器启动的时候使用命令-t。
你可以在http://loggly.com的search页面,通过tag: logspout来查找你的log,然后不同的docker的log都会有自己的标签,可以通过syslog.appName:dockerName来查找自己对应docker的log:
![73951b39afece7034a7ba428b26e845a.png](https://i-blog.csdnimg.cn/blog_migrate/0962639402f67101daee76d020d235da.jpeg)
(3) 停止http://loggly.com
因为启动了一个docker去推送log到http://loggly.com,如果不想使用loggly的服务的话,直接把这个docker停掉就可以了:
Docker stop containerId
Docker rm containerId
3. Loggly优缺点
优点就是:用这个方式来记录项目log,项目中一行代码不用改(只要原本的log有输出到控制台)。
缺点:毕竟log打到第三方平台,总觉得对于隐私数据有些不安全。
其他的暂时没想到。