如何在Multitail日志中保留颜色?

21

tail logs/development.log在XFCE终端中的输出结果:

tail logs/development.log在XFCE终端中的输出结果

multitail log/development.log

multitail log/development.log的输出结果

Rails会自动向日志文件中添加转义代码。请查看development.log文件:

  ^[[1m^[[36m (84.1ms)^[[0m  ^[[1mCREATE TABLE "schema_migrations" ("version" varchar(255) NOT NULL) ^[[0m
  ^[[1m^[[35m (92.6ms)^[[0m  CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
  ^[[1m^[[36m (0.2ms)^[[0m  ^[[1mSELECT version FROM "schema_migrations"^[[0m
  ^[[1m^[[35m (159.3ms)^[[0m  INSERT INTO "schema_migrations" (version) VALUES ('20130327221553')
  ^[[1m^[[36m (59.9ms)^[[0m  ^[[1mINSERT INTO "schema_migrations" (version) VALUES ('20130326152730')^[[0m
  ^[[1m^[[35m (59.8ms)^[[0m  INSERT INTO "schema_migrations" (version) VALUES ('20130327173637')

multitail -c 生成的输出无法使用。

multitail -c 的输出

如何在Multitail中为日志添加颜色,而不编写自己的颜色方案?

1个回答

41

这是关于解释ANSI转义序列的问题,这些序列不是终端本身处理的,而是需要使用multitail。可以通过-cT ANSI选项来实现:

-cT term    interpret terminal-codes from file/command (for terminal type 'term')

例子:

$ multitail -cT ansi log/development.log
multiple files:
$ multitail -cT ansi log/development.log -cT ANSI log/test.log

colorized output of multitail -cT ansi log/development.log


2
我又谷歌了一下,现在想再点赞一次... 谢谢! - Julian F. Weinert
4
我很高兴能帮上忙。其实这也是回答自己问题的主要原因——以后方便查找。 - A.D.
1
我似乎无法使用管道输入使其工作...是否有不同的命令?编辑::已经解决了,你只需要确保顺序正确。multitail -j -cT ansi不起作用,但是multitail -cT ansi -j可以。 - Joshua
这似乎与-Q i path不兼容。我正在使用multitail的6.5.0版本。即使没有-Q,它也无法渲染某些颜色,比如浅黑色(90)。我唯一有效的解决方案是回到使用tail,它可以完美地渲染所有内容。我不得不回到只写一个日志文件,并使用logrotate进行轮转的方式。 - Asclepius

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接