2015-03-15 3 views
18

मैं टाइपएफ़ के Scala Logging का उपयोग करने की कोशिश कर रहा हूं लेकिन इसे किसी भी डीबग संदेश को प्रिंट करने के लिए नहीं मिला। मैं स्केल लॉगिंग को डिफ़ॉल्ट स्क्रीन पर डीबग संदेश प्रिंट करने की उम्मीद करता हूं लेकिन यह काम नहीं करता है। एक पूरा उदाहरण बहुत उपयोगी होगा या विशिष्ट सलाह देगा कि क्या बदलना अच्छा होगा। मैं स्कैला 2.11 का उपयोग करता हूं।पूर्ण "स्कैला लॉगिंग" उदाहरण

  1. मैं build.sbt निर्भरता कहा:: यहाँ मैं क्या किया है

    libraryDependencies += "com.typesafe.scala-logging" %% "scala-logging" % "3.1.0" 
    

    हालांकि मुझे यकीन है कि अगर यह आवश्यक है नहीं कर रहा हूँ, मैं निम्न पंक्ति जोड़ा है, लेकिन यह नहीं था टी कोई फर्क कार्य करें:

    libraryDependencies += "com.typesafe.scala-logging" % "scala-logging-slf4j_2.11" % "2.1.2" 
    
  2. इस तरह मेरी कक्षा मूल रूप से की तरह लग रहा है:

    import com.typesafe.scalalogging._ 
    
    class MyClass extends LazyLogging { 
        // ... 
        logger.debug("Here goes my debug message.") 
        // ... 
    } 
    
  3. मैंने फ़ाइल की खोज की ./src/main/resources/logback.xml लेकिन मुझे यकीन नहीं है कि कौन सा मॉड्यूल स्थापित है और यदि यह प्रासंगिक है। मैंने लॉग स्तर को बिना किसी प्रभाव के "डीबग" में बदल दिया।

    <configuration> 
    
        <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> 
        <!-- encoders are assigned the type 
         ch.qos.logback.classic.encoder.PatternLayoutEncoder by default --> 
        <encoder> 
         <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> 
        </encoder> 
        </appender> 
    
        <logger name="scala.slick" level="DEBUG"/> 
    
        <root level="debug"> 
        <appender-ref ref="STDOUT" /> 
        </root> 
    </configuration> 
    

उत्तर

7

आईआईआरसी यह डिफ़ॉल्ट रूप से जानकारी स्तर से शुरू होने वाले संदेशों को प्रिंट करेगा। इसे बदलने के लिए, आपको logback.xml फ़ाइल को src/main/resources में डालना होगा (या -Dlogback.configurationFile=/path/to/config.xml JVM पैरामीटर का उपयोग करें)। लॉगबैक दस्तावेज़ में Configuration अध्याय देखें।

+0

वास्तव में मेरे पास पहले से ही उचित फ़ाइल 'logback.xml' है। यह अभी भी किसी भी डीबग संदेश मुद्रित नहीं करता है। मैंने तदनुसार अपना प्रश्न अपडेट किया। – jans

+2

'पुस्तकालय निर्भरता + = "ch.qos.logback"% "लॉगबैक-क्लासिक"% "1.1.2" build.sbt को जोड़ने का प्रयास करें। आपको पुराने संस्करण को भी हटा देना चाहिए ('" स्कैला-लॉगिंग-एसएलएफ 4j_2.11 "%" 2.1.2 "'); वे संघर्ष कर सकते थे। –

+2

हां, 'लाइब्रेरी निर्भरता + = "ch.qos.logback"% "लॉगबैक-क्लासिक"% "1.1.2" इसे हल करता है। बहुत बहुत धन्यवाद। – jans

2

आप निकट पहुंच गए हैं, लेकिन आप com.typesafe.scalalogging में Logger साथी के लिए apply विधि में एक SLF4J लकड़हारा का उपयोग कर एक logger उदाहरण घोषित करने के लिए है। अपने में build.sbt में शामिल हैं:

libraryDependencies += "com.typesafe.scala-logging" %% "scala-logging" % "3.1.0" 

libraryDependencies += "org.slf4j" % "slf4j-api" % "1.7.10" 

फिर इस काम करेगा:

import com.typesafe.scalalogging._ 
import org.slf4j.LoggerFactory 

class MyClass extends LazyLogging { 
    // ... 
    val logger = Logger(LoggerFactory.getLogger(this.getClass)) 
    logger.debug("Here goes my debug message.") 
    // ... 
} 

Here LoggerFactory के लिए एक संदर्भ है। आशा करता हूँ की ये काम करेगा!

+5

'LazyLogging' विशेषता [पहले से ही 'लॉगर' सदस्य शामिल है एसएलएफ 4 जे लॉगर क्लास का एक उदाहरण है] (https://github.com/typesafehub/scala-logging/blob/5b45f24a35d0a4ee560cc3148bb63dde88047ede/src/main/scala/com/typesafe/scalalogging/Logging.scala#L27-L28), तो मुझे नहीं लगता कि यह है। –

+0

आपकी मदद के लिए धन्यवाद। लेकिन यह मेरे लिए काम नहीं करता है। 'लॉगर' को पहले से ही 'LazyLogging' विशेषता में परिभाषित किया गया है। इसलिए मैंने 'लॉगजर' का नाम बदलकर 'मायलॉगर' किया जो संकलित करता है लेकिन फिर भी कोई डीबग संदेश मुद्रित नहीं होता है। – jans

32

उन लोगों के लिए जो अभी भी आपके एसबीटी प्रोजेक्ट में अपना स्कैला-लॉगिंग कार्य कैसे करें, इसके लिए संघर्ष करते हैं। अपने/src/मुख्य/संसाधन/और पेस्ट में logback.xml

libraryDependencies += "com.typesafe.scala-logging" %% "scala-logging" % "3.1.0" 
libraryDependencies += "ch.qos.logback" % "logback-classic" % "1.1.2" 
  • एक फ़ाइल बनाएँ:

    1. अपने build.sbt में इन दो निर्भरता जोड़ें: वे सिर्फ इन चरणों का पालन करने की जरूरत है उस फ़ाइल में नीचे उल्लिखित सामग्री।

      <configuration> 
          <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> 
           <encoder> 
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> 
           </encoder> 
          </appender> 
      
          <appender name="FILE" class="ch.qos.logback.core.FileAppender"> 
           <!-- path to your log file, where you want to store logs --> 
           <file>/Users/yourusername/test.log</file> 
           <append>false</append> 
           <encoder> 
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> 
           </encoder> 
          </appender> 
      
          <root level="debug"> 
           <appender-ref ref="STDOUT" /> 
           <appender-ref ref="FILE" /> 
          </root> 
      </configuration> 
      
    2. विशेषता LazyLogging के साथ अपने स्काला वर्ग या वस्तु का विस्तार:

      import com.typesafe.scalalogging.slf4j.LazyLogging 
      class MyClass extends LazyLogging { 
          logger.debug("This is very convenient ;-)") 
      } 
      
    3. यह किया है।

    पी।एस: केवल एक पक्ष नोट कि लॉगर पहले से ही LazyLogging विशेषता का सदस्य है, इसलिए आपको इसे बनाने की आवश्यकता नहीं है (जैसा ऊपर दिखाया गया है)

  • +4

    'आयात com.typesafe.scalalogging.LazyLogging' मेरे लिए क्या काम करता है। –

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