我希望有动态的logback appender属性,可以很容易地添加到logback配置文件中,但是试图设置appender的类和名称(它们在xml属性中,而不是appender元素下的元素中)。
以下是我的application.yml(为示例硬编码了值,但在实际用例中,在部署到K8s集群期间,这些值将作为env变量从Helm传递):
log:
config:
appender:
name: CONSOLE
class: ch.qos.logback.core.ConsoleAppender
下面是我如何访问logback-spring.xml(spring boot version-2.2.4.release
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- use Spring default values like patterns -->
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<!-- declaration of ENV properties: -->
<springProperty name="LOG_CONFIG_APPENDER_NAME" source="log.config.appender.name"/>
<springProperty name="LOG_CONFIG_APPENDER_CLASS" source="log.config.appender.class"/>
<appender name="${LOG_CONFIG_APPENDER_NAME}" class="${LOG_CONFIG_APPENDER_CLASS}">
<encoder>
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>utf8</charset>
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="${LOG_CONFIG_APPENDER_NAME}"/>
</root>
</configuration>
ERROR in ch.qos.logback.core.joran.action.AppenderAction - Could not create an Appender of type [${LOG_CONFIG_APPENDER_CLASS}]. ch.qos.logback.core.util.DynamicClassLoadingException: Failed to instantiate type ${LOG_CONFIG_APPENDER_CLASS}
对于本地环境,我想有一个简单的控制台日志appender。对于其他内容,我将使用LayoutRappingEncoder
和JacksonJsonFormatter
为我们的ELK堆栈添加自定义字段。
因此,您希望在logback-spring.xml
中使用
标记:
标记允许您根据活动的Spring概要文件包括或排除配置部分。
元素中的任何位置都支持配置文件节。使用name
属性指定哪个配置文件接受配置。
标记可以包含简单的概要文件名(例如staging
)或概要文件表达式。配置文件表达式允许表达更复杂的配置文件逻辑,例如production&(eu-central eu-west)
。有关更多详细信息,请参阅参考指南。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<springProfile name="staging">
<!-- configuration to be enabled when the "staging" profile is active -->
</springProfile>
<springProfile name="dev | staging">
<!-- configuration to be enabled when the "dev" or "staging" profiles are active -->
</springProfile>
<springProfile name="!production">
<!-- configuration to be enabled when the "production" profile is not active -->
</springProfile>
</configuration>
是否有一种方法可以通过环境变量来选择是否有一个logback appender? 我有一个dockerized spring boot微服务,现在添加了ELK堆栈。 到目前为止工作得很好。 但是现在如果我想在没有ELK堆栈的情况下启动服务,应用程序会抛出一个错误,即它不知道logstash的主机: 下面是我的logback.xml文件: 我知道这是一个非常简单的版本,但我对使用logback/el
在为Logback appender指定实现类时,是否可以使用变量替换?例如, 如上所述指定时,Logback似乎试图加载名称为“${LOGFILE_APPENDER_CLASS}”的类。也就是说,不执行变量替换! 我想将输出发送到eclipse开发人员的生产和控制台中的文件。如果可能的话,我不想重复appender配置,因为它包含了一长串过滤器,在大多数情况下都是相同的。
我对使用Spring、SLF4J和logback是新手。我试图实现一个自定义数据库追加器,它将只记录Spring批处理期间数据库的特定类型的异常。 到目前为止,我已经开始在spring中设置一个扩展AppenderBase类的Logback Database Appender,然后设置一个扩展InitializingBean的初始化器,以便在spring初始化后将Appender添加到根记录器(这
我知道Cucumber可以在给定的步骤定义中定义实例变量。此实例变量成为
如何配置 比如要 # OS X, Linux $ PORT=3000 umi dev # Windows (cmd.exe) $ set PORT=3000&&umi dev # Or use cross-env for all platforms $ yarn add cross-env --dev $ cross-env PORT=3000 umi dev # .env $ echo P
问题内容: 我需要使用可以通过循环轻松获得的命名模式来创建大量对象。有什么办法可以像这样从变量中读取对象名称? 我不需要为对象分配变量名,仅是在分配时从其获取名称。 问题答案: 您所选择的单词表明您不完全了解变量和对象的工作方式,因此您需要对其进行修复以使其在Java中得到广泛应用。 如果我写: 我创建一个新对象, 然后 定义一个指向该对象的变量。 该对象 没有名称 (它具有一个ID,该ID是在运