【问题标题】:View exported console coloured logs查看导出的控制台彩色日志
【发布时间】:2018-02-11 13:36:22
【问题描述】:

有没有办法在控制台中查看导出的彩色日志(带颜色)?

我的程序对错误、警告等使用颜色编码。如果我将程序的输出重定向到 file.log,我会得到如下记录:

[32m[1m(INF)[0m /environment/converter: 状态图:[ 2, 3, 4, 5, 6, 7, 8, 11, 12, 13, 14, 15, 16, 17, 18 ][0米

[32m[1m(INF)[0m /environment/converter: 动作图:[ -1, -1, -1, 0, 1, 2, 3, 4, 5 ][0m

[32m[1m(INF)[0m PyEnv: Observation dims: 15[0m

[32m[1m(INF)[0m PyEnv:动作暗淡:6[0m

随机种子无

[32m[1m(INF)[0m GRL 种子 1428[0m

现在我想查看 file.log,但没有颜色代码,或者保留颜色更好。

我尝试过 nano、vi 和 gedit,但它们都没有做我想做的事。

【问题讨论】:

    标签: linux console stdout


    【解决方案1】:

    如果您仍然想知道如何做这件事,这里有一些想法。

    • 文本编辑器将无法读取颜色代码,因为它们是 Bash 特定的。但是,cat 可以工作,因为它可以解释颜色代码。但是,您存储颜色的方式一开始就没有正确格式化

    我不确定您是如何写入日志文件的,但我回应了您的示例并将输出重定向到文件中。我也没有看到颜色。原因是您必须转义每个方括号才能让 Bash 解释代码。

    所以我转义括号的方法是在每个方括号之前手动添加 \e 并使用 echo -e 来评估转义字符:

    `echo -e "\e[32m\e[1m(INF)\e[0m /environment/converter: State map: [ 2, 3, 4, 5, 6, 7, 8, 11, 12, 13, 14, 15, 16, 17, 18 ]\e[0m`                                                                                                                                                                                                                                           
    `\e[32m\e[1m(INF)\e[0m /environment/converter: Action map: [ -1, -1, -1, 0, 1, 2, 3, 4, 5 ]\e[0m`                                                                                                                                                             
    `\e[32m\e[1m(INF)\e[0m PyEnv: Observation dims: 15\e[0m`                                                                                                                                                                                                      
    `\e[32m\e[1m(INF)\e[0m PyEnv: Action dims: 6\e[0m`                                                                                                                                                                                                            
    `Random seed None`                                                                                                                                                                                                                                            
    `\e[32m\e[1m(INF)\e[0m GRL seed 1428\e[0m " > example.txt`
    

    现在,当我使用 cat 打开文件时,我看到的文本颜色正确:

    颜色代码现在已在 .txt 文件中正确存储和转义:

    ^[[32m[1m(INF)[0m GRL seed 1428^[[0m

    [32m[1m(INF)[0m GRL seed 1428[0m

    它将生成 HTML 而不是纯文本。然后你可以在浏览器中打开输出,它会有正确的颜色编码。

    但是,您会遇到同样的问题。如果颜色代码没有正确转义,则输出不会被着色。

    我运行以下命令将格式正确的文本转换为 HTML:

    aha -f example.txt > example.html

    这是浏览器中的结果:

    您可以在Bash Tips article 中找到有关如何在 bash 中使用颜色的更多信息。

    【讨论】:

      猜你喜欢
      • 2014-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-15
      • 2020-07-13
      • 2020-10-19
      相关资源
      最近更新 更多