【发布时间】:2019-12-06 12:40:39
【问题描述】:
我想通过使用 ansible 将字符串附加到 log4j.propertis 文件的 EOL。问题是文件有新行,当尝试使用 ansible 的 lineinfile 模块的“backrefs”时,它会在行下添加字符串而不是附加到 EOL。
该文件是 log4j 属性文件,其中包含我要编辑的一行。该行以“log4j.rootLogger”开头,我想在 EOL 中附加一个字符串“bla”
这就是该行现在的样子: log4j.rootLogger=WARN, memory, servlet
变化后预期: log4j.rootLogger=WARN, memory, servlet, bla
我使用的 ansible 代码,其中 rootLoggerAppender 是属性:
lineinfile:
path: "{{ tomcat_path }}/webapps/ROOT/WEB-INF/config/log4j.properties"
regexp: '^(log4j.rootLogger=\.*)'
line: '\1, {{ rootLoggerAppender }}'
backrefs: yes
更新:
当我 cat log4j.properties 时输出如下:
# servlet appender - logs in memory only, allowing remote read of logs
log4j.rootLogger=DEBUG, memory, servlet
当我更新 ansible 代码以匹配输出与预期的确切行时。
lineinfile:
path: "{{ tomcat_path }}/webapps/ROOT/WEB-INF/config/log4j.properties"
regexp: '^(log4j\.rootLogger=DEBUG, memory, servlet)'
line: '\1, {{ rootLoggerAppender }}'
backrefs: yes
我还注意到该文件是一个 windows 文件,当将其转换为 linux 时,它可以正常工作
【问题讨论】: