是否有一种方法可以通过环境变量来选择是否有一个logback appender?
我有一个dockerized spring boot微服务,现在添加了ELK堆栈。
到目前为止工作得很好。
但是现在如果我想在没有ELK堆栈的情况下启动服务,应用程序会抛出一个错误,即它不知道logstash的主机:
app | 10:09:23,537 |-ERROR in ch.qos.logback.classic.net.SyslogAppender[SYSLOG] - Could not create SyslogWriter java.net.UnknownHostException: logstash: Name or service not known
app | at java.net.UnknownHostException: logstash: Name or service not known
下面是我的logback.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="SYSLOG" class="ch.qos.logback.classic.net.SyslogAppender">
<syslogHost>logstash</syslogHost>
<port>5000</port>
<facility>LOCAL1</facility>
<suffixPattern>[%thread] %logger %msg</suffixPattern>
</appender>
<root level="INFO">
<appender-ref ref="SYSLOG"/>
</root>
</configuration>
我知道这是一个非常简单的版本,但我对使用logback/elk堆栈进行日志记录是新手。
那么,有没有一种方法可以像使用我的普罗米修斯度量标准一样,在yaml文件中注入环境变量,例如active=${logback_active:false}
?
在logback.xml中,可以使用
构造来在出现命名JVM参数时启用syslog
appender。
在下面的示例中,如果使用-dsyslog
运行应用程序,则将使用syslog
appender,否则将忽略它,并使用默认appenderconsole
:
<if condition='isDefined("syslog")'>
<then>
<appender name="SYSLOG" class="ch.qos.logback.classic.net.SyslogAppender">
...
</appender>
<root level="INFO">
<appender-ref ref="SYSLOG" />
</root>
</then>
<else>
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
...
</appender>
<root level="INFO">
<appender-ref ref="CONSOLE" />
</root>
</else>
</if>
这需要对root
声明进行一些复制,但由于需要有条件地防止SYSLOG appender被实例化,我认为这可能是唯一的选择。
问题内容: 我希望运行一个简单的Shell脚本来简化某些conda环境的管理。在os中通过os激活conda环境在shell中工作正常,但在shell脚本中却存在问题。有人可以指出为什么发生这种情况的正确方向吗? 重复该问题的示例: 问题答案: 错误消息很有帮助-告诉您在运行脚本的子外壳中未正确设置conda。要在脚本中使用conda,您将需要(如错误消息所述)运行(或您的外壳是什么)首先。con
问题内容: 我试图使用临时表开发此存储过程,但是那行不通,所以我改用表变量。我需要对表变量执行临时动态查询,然后使用该表变量执行最终查询。问题是我收到错误消息“必须声明标量变量@clms”。我假设Exec没有该表变量的作用域? 问题答案: 这是简单的最小示例。您可以使用语句。关键是要在动态查询的内部和外部声明表变量。在动态查询结束时,只需从表变量中选择并将结果集插入外部表变量中即可:
问题内容: 我写了一个python程序。如果我有一个像这样的shebang: 然后使用以下命令使文件可执行: 我可以这样运行程序: 这是问题。我使用conda虚拟环境。当我运行上述程序时,系统会创建一个无法识别活动环境的子外壳: 但是如果我这样做的话… 如何指定在子Shell中使用的正确环境?可能吗?我希望省去输入六个字符串的麻烦。 另一篇文章,在conda托管环境中的Shebangs,简短地谈到
问题内容: 我想通过Python中的while循环动态创建变量。 问题答案: 可以使用字典来完成此任务。字典是键和值的存储。 你可以使用变量键名来获得变量变量的效果,而不会带来安全风险。 对于你正在考虑做类似事情的情况 … 列表可能比字典更合适。一个列表代表对象的有序序列,并带有整数索引: 对于有序序列,列表比整数键类型的字典更方便,因为列表支持迭代的索引顺序,,和其他操作,将需要尴尬密钥管理与字
我想记录SpringBoot 2.7.0中的所有SQL语句https://www.baeldung.com/sql-logging-spring-boot#2-通过记录器,通过以下属性完成: 只要我使用-File,这就可以正常工作。但是我必须通过OpenShift中的环境变量来设置它。 令人不快的是,文档 https://github.com/spring-projects/spring-boot
当满足某些条件时,如遇到特殊类型的元组,我希望停用拓扑。这可以在喷口/螺栓中完成吗?如果是,是否也有办法从喷口/螺栓重新激活拓扑?