सबसे पहले, आपको कुछ पृष्ठभूमि पसंद हो सकती है क्यों परीक्षण मोड में लॉगिंग अक्षम है। इस नाटक मंच में एक प्रश्न के Guillame Bort के जवाब था (this thread देखें):
लकड़हारा अब क्योंकि यह एक विशाल PermGen अंतरिक्ष रिसाव पैदा कर रहा था जब परीक्षण चलाने के लिए परीक्षण मोड में अक्षम है। लेकिन हम एक फोर्क किए गए जेवीएम में परीक्षण चलाने के लिए काम कर रहे हैं ताकि हम इसे जल्द ही सक्षम कर सकें।
समाधान के लिए, मैं इस (स्काला कोड) की तरह अपने ही लकड़हारा बनाया:
import play.api.{Play, LoggerLike, Logger}
import org.slf4j.LoggerFactory
import org.slf4j.impl.SimpleLoggerFactory
object MyLogger extends LoggerLike {
val factory = if (Play.isTest(Play.current)) {
new SimpleLoggerFactory()
} else {
LoggerFactory.getILoggerFactory
}
val redirectDebugToInfo = factory.isInstanceOf[SimpleLoggerFactory]
val logger = factory.getLogger("application")
def apply(name: String): Logger = new Logger(factory.getLogger(name))
def apply[T](clazz: Class[T]): Logger = new Logger(factory.getLogger(clazz.getCanonicalName))
// this method is to make debug statements to show up in test mode
override def debug(m: => String) = {
if (redirectDebugToInfo) {
info(m)
} else {
super.debug(m)
}
}
}
मैं कैसे इस कोड को सामान्य रूप में PermGen लीक के संबंध में बर्ताव करता है पता नहीं है, लेकिन अभी तक मैं नहीं था उस समस्या नहीं है। यह आप इस निर्भरता जोड़ने की जरूरत है काम करने के लिए:
"org.slf4j" % "slf4j-simple" % "1.6.4"
आप 'SLF4J साथ कैसे सामना करते हैं : कक्षा पथ में कई एसएलएफ 4 जे बाइंडिंग शामिल हैं। चेतावनी? – Rajish
@ राजिश मैं इसके साथ सौदा नहीं करता, क्योंकि यह सिर्फ एक अस्थायी कामकाज है। मेरे लिए चेतावनी ने कोई मुद्दा नहीं दिया। क्या यह आपको कोई समस्या देता है? – rintcius
@rintcius कामकाज के लिए धन्यवाद! मैं जावा का उपयोग कर रहा हूं और जहां तक मुझे पता है कि मैं सिर्फ स्कैला कोड मिश्रण कर सकता हूं। मैंने इसे अपने जावा प्रोजेक्ट में स्कैला फ़ाइल के रूप में जोड़ा लेकिन यह काम नहीं कर रहा है। अपने कोड को देखते हुए मुझे सामान्य रूप से Logger.debug ("डीबग") विचारों के रूप में लॉग इन करने में सक्षम होना चाहिए? मैंने निर्भरता भी जोड़ दी। –