Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash Syslog-如何显示彩色消息?_Bash_Systemd_Syslog_Tail_Ansi Escape - Fatal编程技术网

Bash Syslog-如何显示彩色消息?

Bash Syslog-如何显示彩色消息?,bash,systemd,syslog,tail,ansi-escape,Bash,Systemd,Syslog,Tail,Ansi Escape,我需要澄清的是,我不想给日志输出上色,我只对写入syslog的程序输出感兴趣 下面是一个场景,我有一个运行脚本的systemdunit服务,它指示Bash中的256色 以下是服务单元文件: [Unit] Description=Bash Color Service [Service] Type=simple EnvironmentFile=/etc/environment ExecStart=/home/username/colors.sh StandardOutput=syslog Sta

我需要澄清的是,我不想给日志输出上色,我只对写入
syslog
的程序输出感兴趣

下面是一个场景,我有一个运行脚本的
systemd
unit服务,它指示Bash中的256色

以下是服务单元文件:

[Unit]
Description=Bash Color Service

[Service]
Type=simple
EnvironmentFile=/etc/environment
ExecStart=/home/username/colors.sh

StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=bashcolors

Restart=on-failure
RestartSec=10

User=username
Group=username

[Install]
WantedBy=multi-user.target
这是
/home/username/colors.sh下的Bash脚本(摘自):

运行此脚本会向我的终端输出一些彩色输出,如下所示:

好的,现在来看看实际问题。当我运行该服务时,syslog输出确实包含转义颜色字符,但不以颜色显示。下面是
tail-f/var/log/syslog
的一个片段输出,其中包含相关信息:

bashcolor[19892]: #033[48;5;202m  202  #033[0m#033[48;5;203m  203  #033[0m#033[48;5;204m  204  #033[0m#033[48;5;205m  205  #033[0m#033[48;5;206m  206  #033[0m#033[48;5;207m  207  #033[0m
bashcolor[19892]: #033[48;5;208m  208  #033[0m#033[48;5;209m  209  #033[0m#033[48;5;210m  210  #033[0m#033[48;5;211m  211  #033[0m#033[48;5;212m  212  #033[0m#033[48;5;213m  213  #033[0m
bashcolor[19892]: #033[48;5;214m  214  #033[0m#033[48;5;215m  215  #033[0m#033[48;5;216m  216  #033[0m#033[48;5;217m  217  #033[0m#033[48;5;218m  218  #033[0m#033[48;5;219m  219  #033[0m
bashcolor[19892]: #033[48;5;220m  220  #033[0m#033[48;5;221m  221  #033[0m#033[48;5;222m  222  #033[0m#033[48;5;223m  223  #033[0m#033[48;5;224m  224  #033[0m#033[48;5;225m  225  #033[0m
bashcolor[19892]: #033[48;5;226m  226  #033[0m#033[48;5;227m  227  #033[0m#033[48;5;228m  228  #033[0m#033[48;5;229m  229  #033[0m#033[48;5;230m  230  #033[0m#033[48;5;231m  231  #033[0m
bashcolor[19892]: #033[48;5;232m  232  #033[0m#033[48;5;233m  233  #033[0m#033[48;5;234m  234  #033[0m#033[48;5;235m  235  #033[0m#033[48;5;236m  236  #033[0m#033[48;5;237m  237  #033[0m
bashcolor[19892]: #033[48;5;238m  238  #033[0m#033[48;5;239m  239  #033[0m#033[48;5;240m  240  #033[0m#033[48;5;241m  241  #033[0m#033[48;5;242m  242  #033[0m#033[48;5;243m  243  #033[0m
bashcolor[19892]: #033[48;5;244m  244  #033[0m#033[48;5;245m  245  #033[0m#033[48;5;246m  246  #033[0m#033[48;5;247m  247  #033[0m#033[48;5;248m  248  #033[0m#033[48;5;249m  249  #033[0m
bashcolor[19892]: #033[48;5;250m  250  #033[0m#033[48;5;251m  251  #033[0m#033[48;5;252m  252  #033[0m#033[48;5;253m  253  #033[0m#033[48;5;254m  254  #033[0m#033[48;5;255m  255  #033[0m
到目前为止我已经尝试过的事情

  • 使用工具:
    tail-f/var/log/syslog | ccze-A
  • echo-ne$(tail-f/var/log/syslog)
  • 使用和
    rainbow
    实用程序而不是
    tail

  • 默认情况下,系统日志转义ansi颜色代码。要启用,请将以下内容添加到
    /etc/rsyslog.conf

    $EscapeControlCharactersOnReceive off

    然后重新启动
    rsyslog
    和您的服务

    $ systemctl restart rsyslog
    $ systemctl restart my_color_service
    

    就是这样!很简单,非常感谢。正是我想要的。
    $ systemctl restart rsyslog
    $ systemctl restart my_color_service