下面列出了怎么用org.apache.logging.log4j.core.appender.rewrite.RewriteAppender的API类实例代码及写法,或者点击链接到github查看源代码。
/** Modifies the log4j config to add the policy **/
public static void install() {
Logger rootLogger = (Logger) LogManager.getRootLogger();
LoggerConfig loggerConfig = rootLogger.get();
// Remove appender refs from config
List<AppenderRef> appenderRefs = new ArrayList<>(loggerConfig.getAppenderRefs());
for (AppenderRef appenderRef : appenderRefs) {
loggerConfig.removeAppender(appenderRef.getRef());
}
// Create the RewriteAppender, which wraps the appenders
RewriteAppender rewriteAppender = RewriteAppender.createAppender(
"VanillaFixDeobfuscatingAppender",
"true",
appenderRefs.toArray(new AppenderRef[0]),
rootLogger.getContext().getConfiguration(),
new DeobfuscatingRewritePolicy(),
null
);
rewriteAppender.start();
// Add the new appender
loggerConfig.addAppender(rewriteAppender, null, null);
}
public static void addAppenderToContext(
final LoggerContext ctx,
final AuditAppender auditAppender,
final LoggerConfig eventLogConf) {
Appender targetAppender = ctx.getConfiguration().getAppender(auditAppender.getTargetAppenderName());
if (targetAppender == null) {
targetAppender = auditAppender.getTargetAppender();
}
targetAppender.start();
ctx.getConfiguration().addAppender(targetAppender);
Optional<RewriteAppender> rewriteAppender = auditAppender.getRewriteAppender();
if (rewriteAppender.isPresent()) {
rewriteAppender.get().start();
eventLogConf.addAppender(rewriteAppender.get(), Level.DEBUG, null);
} else {
eventLogConf.addAppender(targetAppender, Level.DEBUG, null);
}
}
private <T extends Log4j1Configuration> Appender createAppender(String name, String level,
String[] appenderRefs, RewritePolicy policy, Filter filter, T configuration) {
org.apache.logging.log4j.Level logLevel = OptionConverter.convertLevel(level,
org.apache.logging.log4j.Level.TRACE);
AppenderRef[] refs = new AppenderRef[appenderRefs.length];
int index = 0;
for (String appenderRef : appenderRefs) {
refs[index++] = AppenderRef.createAppenderRef(appenderRef, logLevel, null);
}
org.apache.logging.log4j.core.Filter rewriteFilter = buildFilters(level, filter);
org.apache.logging.log4j.core.appender.rewrite.RewritePolicy rewritePolicy;
if (policy instanceof RewritePolicyWrapper) {
rewritePolicy = ((RewritePolicyWrapper) policy).getPolicy();
} else {
rewritePolicy = new RewritePolicyAdapter(policy);
}
return new AppenderWrapper(RewriteAppender.createAppender(name, true, refs, configuration,
rewritePolicy, rewriteFilter));
}
@Override
public void init(final String domain) {
super.init(domain);
rewriteAppender = RewriteAppender.createAppender(
getTargetAppenderName() + "_rewrite",
"true",
new AppenderRef[] { AppenderRef.createAppenderRef(getTargetAppenderName(), Level.DEBUG, null) },
((LoggerContext) LogManager.getContext(false)).getConfiguration(), getRewritePolicy(), null);
}
@Override
public Optional<RewriteAppender> getRewriteAppender() {
return Optional.of(rewriteAppender);
}
default Optional<RewriteAppender> getRewriteAppender() {
return Optional.empty();
}