2013-01-13 16 views
6

क्या <context:property-placeholder /> के साथ वसंत द्वारा लोड की गई संपत्ति फ़ाइल की सभी सामग्री को लॉग करना संभव है? आपवसंत द्वारा लोड की गई संपत्तियों को कैसे लॉग करें?

@Component 
public class PropertiesLogger { 
    private static Logger logger = LoggerFactory.getLogger(PropertiesLogger.class); 

    @Resource("myProperties") 
    private Properties props; 

    @PostConstruct 
    public void init() { 
    for (Map.Entry<Object, Object> prop : props.entrySet()) { 
     logger.debug("{}={}", prop.getKey(), prop.getValue()); 
    } 
    } 
} 

उत्तर

2

आप इसे इस तरह से कर सकते हैं:

<context:property-placeholder properties-ref="myProperties"/> 

<bean id="myProperties" 
     class="org.springframework.beans.factory.config.PropertiesFactoryBean"> 
    <property name="locations"> 
    <list> 
     .. locations 
    </list> 
    </property> 
</bean> 

और नीचे एक करने के लिए (यहाँ एनोटेशन आधारित है और slf4j एपीआई के साथ) एक प्रवेश सेम समान जोड़ने org.springframework.core.env.PropertySourcesPropertyResolver के लॉग स्तर को "डीबग" पर सेट कर सकते हैं। फिर, आप हल करने के दौरान गुणों का मूल्य देख पाएंगे।

+0

यह केवल तभी काम करता है जब आपके पास एक गुण प्लेसहोल्डर हो। – Walfrat

9

:

धन्यवाद

+5

अद्यतन: अब और सत्य नहीं है। Http://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/core/env/PropertySourcesPropertyResolver.html#logKeyFound-java.lang.String-org.springframework.core.env देखें .PropertySource-java.lang.Object- जो 4.3.3 के रूप में पढ़ता है, यह संवेदनशील सेटिंग्स के आकस्मिक लॉगिंग से बचने के लिए अब मूल्य को लॉग नहीं करता है। – dgtc

संबंधित मुद्दे