You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Ansible中为生成的日志文件结果添加颜色标记?

实现日志文件的颜色标记功能

我来帮你搞定给生成的.log文件添加颜色标记的需求,咱们结合Ansible和Jinja2来一步步实现:

原代码回顾

原Ansible脚本

---
#可用内存
- hosts: all
  sudo: yes
  user: ansible
  connection: ssh
  vars:
    RAM: ansible_memory_mb.real.total
  tasks:
    - fail: msg="Not enough RAM"
      when: ansible_memory_mb.real.total < 100
      ignore_errors: yes
      tags: available_ram
    - name: 基础检查
      template: src=../templates/template.conf.j2 dest=/home/ansible/monit{{ansible_hostname}}.log owner=ansible mode=750

原Jinja2模板(template.conf.j2)

{{ansible_hostname}} RAM...

修改方案:添加颜色标记

要在日志里显示终端颜色,咱们需要用到ANSI转义码,在Jinja2模板里根据内存值的范围,输出对应颜色的状态标记:

修改后的Jinja2模板

{{ ansible_hostname }} RAM: {{ ansible_memory_mb.real.total }}MB 
{% if ansible_memory_mb.real.total < 100 %}
[\033[31mLOW\033[0m]
{% elif ansible_memory_mb.real.total < 500 %}
[\033[33mWARNING\033[0m]
{% else %}
[\033[32mOK\033[0m]
{% endif %}
  • 颜色规则说明:
    • \033[31m:红色,标记内存严重不足(<100MB)
    • \033[33m:黄色,标记内存告警(100-499MB)
    • \033[32m:绿色,标记内存正常(≥500MB)
    • \033[0m:重置颜色,避免后续文本被持续染色

优化后的Ansible脚本(可选调整)

原脚本里的RAM变量没有被实际调用,你可以选择删除它;另外把模板参数拆分行写,可读性会更好:

---
#可用内存检查及带颜色的日志生成
- hosts: all
  sudo: yes
  user: ansible
  connection: ssh
  tasks:
    - fail: msg="Not enough RAM"
      when: ansible_memory_mb.real.total < 100
      ignore_errors: yes
      tags: available_ram
    - name: 生成带颜色标记的内存检查日志
      template: 
        src: ../templates/template.conf.j2 
        dest: "/home/ansible/monit{{ansible_hostname}}.log" 
        owner: ansible 
        mode: '0750'

验证效果

运行Ansible playbook后,在目标主机上用cat命令查看日志文件,就能看到不同颜色的内存状态标记了。

内容的提问来源于stack exchange,提问作者Romain

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:45:29