【发布时间】:2021-03-10 09:48:11
【问题描述】:
我有一个配置属性类,我想将它注入到自定义 log4j2 RewritePolicy 中。 例如
@Plugin(name = "MyPolicy", category = "Core", elementType = "rewritePolicy", printObject = true)
public class MyPolicy implements RewritePolicy {
private MyPolicyProperties myPolicyProperties; // <-- want to inject/autowire this
public MyPolicy() {}
@PluginFactory
public static MyPolicy createPolicy() {
return new MyPolicy();
}
@Override
public LogEvent rewrite(LogEvent logEvent) {
// do something with myPolicyProperties here
return Log4jLogEvent.newBuilder()
.setLoggerName(logEvent.getLoggerName())
.setMarker(logEvent.getMarker())
.setLoggerFqcn(logEvent.getLoggerFqcn())
// ... etc
.build();
}
}
@ConfigurationProperties("app.mypolicy")
@Getter
@Setter
public class MyPolicyProperties {
private String property1;
private int property2;
// ... etc
}
我已尝试实现 ApplicationListener 以按照 here 的描述重新配置 log4j,但似乎无法配置 appender 和/或 rewritepolicy。还尝试实现ApplicationContextAware 描述的here,但也没有用。
有没有办法访问MyPolicy中的MyPolicyProperties?
【问题讨论】:
标签: spring-boot logging plugins log4j2 autowired