tagalog:操作、标记和传送日志数据的工具
tagalog的Python项目详细描述
一组命令行工具,用于动态操作日志文件。
不再是推荐的解决方案
我们建议您使用Lumberjack或Heka。这两个交易 以更好的方式(无阻塞)使用I/O,并且周围有一个更大的社区 他们。
用法
tagalog由许多简单的命令行实用程序组成,它们可以帮助您 记录数据的东西。大多数这些工具都假设它将接收日志 stdin上的数据,并在stdout上发出一些转换后的日志数据。
tagalog中最简单的工具是logstamp,它只是在每一行前面加上前缀 它以精确的时间戳接收:
$ seq 3 | logstamp 2013-02-09T18:52:57.893966Z 1 2013-02-09T18:52:57.894272Z 2 2013-02-09T18:52:57.894316Z 3
当然,如果所有人 do是将seq 3导入其中。相反,使用它来给应用程序加上时间戳 日志:
$ ruby myapp.rb | logstamp >app.log
接下来是logtag,它将每个日志行转换为 Logstash兼容的json文档。除了添加@timestamp 字段中,您还可以向每个文档添加标记列表:
$ seq 3 | logtag -a add_tags:sequence:foobar {"@timestamp": "2013-05-10T10:38:22.103940Z", "@source_host": "lynx.local", "@message": "1", "@tags": ["sequence", "foobar"]} {"@timestamp": "2013-05-10T10:38:22.106518Z", "@source_host": "lynx.local", "@message": "2", "@tags": ["sequence", "foobar"]} {"@timestamp": "2013-05-10T10:38:22.106811Z", "@source_host": "lynx.local", "@message": "3", "@tags": ["sequence", "foobar"]}
如您所见,tagalog向每个 默认情况下为文档。
最有用的工具可能是logship,它可以做所有事情 logtag可以,但它不是简单地将日志数据打印到stdout,而是发送 在别的地方。
$ ruby myapp.rb | logship -s redis,redis://redis-1.internal:7777,redis://redis-2.internal:7778,redis://redis-3.internal:7779,key=mylogs
按logship -h查看可用选项。
nb:logship旨在抵御日志失败 收件人。如果它无法向中的某个redis服务器提交日志条目 它的列表,它将尝试下一个。如果它不能连接到任何一个 将向stderr打印警告,否则将正常进行。在 如果它不能提交给任何服务器,它只会删除日志条目 以避免积压工作日后可能导致thundering herd。
最后,还有logtext,大致与logtag相反。它 读取stdin上的json文档并将其转换回纯文本:
$ seq 3 | logtag -f init_txt | logtext 1 2 3
许可证
Tagalog是根据麻省理工学院的许可证发行的,其副本可以在 LICENSE。