SpringBoot项目——字符转义

情况描述

filebeat.yml 文件修改替换部分内容:

filebeat.inputs:
- type: log
  enabled: true
  paths:
    - {{path}}
  fields:
    index: {{index}}
    ip: {{host}}
filebeat.config.modules:
  path: ${path.config}/modules.d/*.yml
  reload.enabled: false
setup.template.settings:
  index.number_of_shards: 1
output.logstash:
  hosts: {{logstashHost}}
processors:
  - add_host_metadata: ~
  - add_cloud_metadata: ~
  - add_docker_metadata: ~
  - add_kubernetes_metadata: ~

替换方法

配置文件内容

log:
  #account-manage-url: http://172.16.72.139:9091/account-manage/role/permission/
  #log-upload-url: https://admin.iotxiongan.cn/api/inapi/log/upload

  logstashHost: 192.168.56.102:5044
  jsonLogstashHost: 192.168.56.103:9601

获取配置文件内容

@ConfigurationProperties(prefix = "log")
public class AppConfig {
    private EsConfig esConfig;
    private Integer defaultDays;
    private String logstashHost;
    private String jsonLogstashHost;
    private String esStorageHost;
    private String esMountPath;
    private SshConfig sshConfig;
    
    public EsConfig getEsConfig() {
        return this.esConfig;
    }
    
    public Integer getDefaultDays() {
        return this.defaultDays;
    }
    
    public String getLogstashHost() {
        return this.logstashHost;
    }
    ...

内容替换,写入需要替换的内容

final HashMap<String, Object> map = new HashMap<String, Object>();
        Mustache m;
        final StringWriter writer = new StringWriter();
        map.put("path", logger.getPath());
        map.put("index", this.appConfig.getEsConfig().getIndexPrefix() + logger.getIndex());
        ArrayList<String> objects = new ArrayList<>();
        objects.add("\""+this.appConfig.getLogstashHost()+"\"");
        map.put("logstashHost",objects );
        map.put("host", logger.getHost());
        m = this.mustacheFactory.compile("template/filebeat.yml");
        m.execute(writer, map);
        ...

程序运行后,一般的能够替换成功

filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /data/log-demo/alerts/*.log
  fields:
    index: logs-tx01
    ip: 192.168.56.103
filebeat.config.modules:
  path: ${path.config}/modules.d/*.yml
  reload.enabled: false
setup.template.settings:
  index.number_of_shards: 1
output.logstash:
  hosts: [&quot;192.168.56.102:5044&quot;]
processors:
  - add_host_metadata: ~
  - add_cloud_metadata: ~
  - add_docker_metadata: ~
  - add_kubernetes_metadata: ~

但是发现
在这里插入图片描述
此处应该是 hosts: ["192.168.56.102:5044"]
但是变成了hosts: [&quot;192.168.56.102:5044&quot;]
进行了HTML字符转义
在这里插入图片描述

解决方法

filebeat.inputs:
- type: log
  enabled: true
  paths:
    - {{path}}
  fields:
    index: {{index}}
    ip: {{host}}
filebeat.config.modules:
  path: ${path.config}/modules.d/*.yml
  reload.enabled: false
setup.template.settings:
  index.number_of_shards: 1
output.logstash:
  hosts: {{&logstashHost}}
processors:
  - add_host_metadata: ~
  - add_cloud_metadata: ~
  - add_docker_metadata: ~
  - add_kubernetes_metadata: ~

就是 hosts: {{&logstashHost}} 在变量前加了一个禁止转义的“&”

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值