2012-11-22 2 views
5

Ich möchte die Protokollierung durch Konfigurieren der Log-Ebene in logger.xml steuern.Protokollierung mit Info-Level im Spiel-Framework 2.0.3 für Java mit Play Logger

Ich habe play.Logger mit Level ERROR in logger.xml gesetzt, aber Logger mit Level INFO, DEBGU werden auch geloggt.

Ich habe verwendet ALogger log = play.Logger.of (Application.class); mit INFO-Ebene in logger.xml, aber nur Fehlerprotokolle werden protokolliert.

Ich habe versucht, die benutzerdefinierte Logger-Klasse auch mit benutzerdefinierten Methoden für Info und Debug zu erstellen, aber es hat nicht geklappt.

Ich habe keine Lösung in einer der Forum/Community-Seiten gefunden. Bitte leite mich weiter.

Unten ist der Code & auch die logger.xml

package test 

import play.mvc.Controller; 
import play.mvc.Result; 
import views.html.index; 

public class Application extends Controller { 

    public static Result index() { 
     return ok(index.render("Rendering ")); 
    } 

    public static Result ourApp() { 
     ALogger log = play.Logger.of(Application.class); 
     log.info("**** Info enabled *****"); 
     log.debug("**** debug enabled *****"); 
     log.error("**** error enabled *****"); 
     if(log.isDebugEnabled()) 
     { 
      log.debug("**** Debug enabled *****"); 
     } 
     if(log.isInfoEnabled()) 
     { 
      log.info("**** Info enabled *****"); 
     } 
     if(log.isErrorEnabled()) 
     { 
      log.error("**** Error enabled *****"); 
     } 
     return ok(); 
    } 

    public static Result getXPage(String patId) { 
     String xValue = TestDao.getXNotes(patId); 
     return ok(test.render(Value)); 
    } 
} 

logger.xml

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
    <conversionRule conversionWord="coloredLevel" converterClass="play.api.Logger$ColoredLevel" /> 

    <appender name="FILE" class="ch.qos.logback.core.FileAppender"> 
    <file>${application.home}/logs/app.log</file> 
    <encoder> 
     <pattern>%date - [%level] - from %logger %n%message%n%xException%n</pattern> 
    </encoder> 
    </appender> 

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> 

    <encoder> 
     <pattern>%date - [%level] - %logger{15} - %message%n%xException{5}</pattern> 
    </encoder> 
    </appender> 

    <logger name="play" level="INFO" /> 
    <logger name="application" level="INFO" /> 

    <root level="ERROR"> 
    <appender-ref ref="STDOUT" /> 
    <appender-ref ref="FILE" /> 
    </root> 
</configuration> 

Ausgang: -

2012-11-22 19:05:43,920 - [INFO] - from play 
Application started (Dev) 

2012-11-22 19:05:44,127 - [ERROR] - from test.Application 
**** error enabled ***** 

Antwort

7

Versuchen Sie, den Logger nam mit e anstelle des Klassennamens

ALogger log = play.Logger.of("application"); 

Diese Wokrs gut. Kommentieren Sie auch die Zeilen, die das Protokolllevel in der Datei erwähnen application.conf

+0

Man kann nur dafür verwenden: play.Logger # info (java.lang.String). Das Problem ist, dass der Klassenname nicht gedruckt wird, von dem aus Sie die Klasse protokollieren.Prints 'play.Logger $ ALogger - 2016-10-02 01: 19: 47,684 - abcxyz meine Anwendungsprotokolle' – saurabheights

0

Ich steckte auf dem gleichen Problem und auch nicht gedruckt tatsächlichen Zeile Nummer und Klassenname meines Protokolls, nach langer Suche fand ich diese project auf Git -hub und versuchte die sl4j Logger wie folgt und es funktioniert.

-Controller

private static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger("controller"); 

Logger.xml

<logger name="controller" level="DEBUG" />

Schließlich alle Protokollebenen in application.conf kommentiert werden.