针对指定的一些类打印的写法,这个不是很通用,不过还可以了
@NoArgsConstructor(access = AccessLevel.PRIVATE)
@Slf4j
public final class ConfigurationLogger {
/**
* Log rule configuration.
*
* @param ruleConfiguration rule configuration
*/
public static void log(final RuleConfiguration ruleConfiguration) {
if (null == ruleConfiguration) {
return;
}
if (ruleConfiguration instanceof ShardingRuleConfiguration) {
log((ShardingRuleConfiguration) ruleConfiguration);
} else if (ruleConfiguration instanceof MasterSlaveRuleConfiguration) {
log((MasterSlaveRuleConfiguration) ruleConfiguration);
} else if (ruleConfiguration instanceof EncryptRuleConfiguration) {
log((EncryptRuleConfiguration) ruleConfiguration);
}
}
private static void log(final ShardingRuleConfiguration shardingRuleConfiguration) {
if (null != shardingRuleConfiguration) {
log(shardingRuleConfiguration.getClass().getSimpleName(),
YamlEngine.marshal(new ShardingRuleConfigurationYamlSwapper().swap(shardingRuleConfiguration), ShardingTupleProcessorFactory.newInstance()));
}
}
private static void log(final MasterSlaveRuleConfiguration masterSlaveRuleConfiguration) {
if (null != masterSlaveRuleConfiguration) {
log(masterSlaveRuleConfiguration.getClass().getSimpleName(), YamlEngine.marshal(new MasterSlaveRuleConfigurationYamlSwapper().swap(masterSlaveRuleConfiguration)));
}
}
private static void log(final EncryptRuleConfiguration encryptRuleConfiguration) {
if (null != encryptRuleConfiguration) {
log(encryptRuleConfiguration.getClass().getSimpleName(), YamlEngine.marshal(new EncryptRuleConfigurationYamlSwapper().swap(encryptRuleConfiguration)));
}
}
/**
* Log authentication configuration.
*
* @param authenticationConfiguration authentication configuration
*/
public static void log(final Authentication authenticationConfiguration) {
if (null != authenticationConfiguration) {
log(authenticationConfiguration.getClass().getSimpleName(), YamlEngine.marshal(new AuthenticationYamlSwapper().swap(authenticationConfiguration)));
}
}
/**
* Log properties.
*
* @param properties properties
*/
public static void log(final Properties properties) {
if (null != properties) {
log(properties.getClass().getSimpleName(), YamlEngine.marshal(properties));
}
}
private static void log(final String type, final String logContent) {
log.info("{}:\n{}", type, logContent);
}
}