5

logger.xmlでログレベルを設定してログを制御したいと思います。

logger.xmlでレベルERRORが設定されたplay.Loggerを使用しましたが、レベルINFO、DEBGUのロガーもログに記録されます。

ALogger log = play.Logger.of(Application.class);を使用しました。 logger.xmlにINFOレベルがありますが、ログに記録されるのはエラーログのみです。

infoとdebugのカスタムメソッドを使用してカスタムロガークラスを作成しようとしましたが、うまくいきませんでした。

フォーラム/コミュニティのどのページにも解決策が見つかりませんでした。先に進む方法を教えてください。

以下はコードと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>

出力:-

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 *****
4

2 に答える 2

7

クラス名の代わりにロガー名を使用してみてください

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

これはうまくいきます。また、ファイル内のログ レベルに言及している行をコメント アウトします。application.conf

于 2012-11-23T12:44:31.333 に答える
0

私は同じ問題に固執し、ログの実際の行番号とクラス名も出力しませんでした。長い検索の後、git-hubでこのプロジェクトsl4jを見つけ、次のようにロガーを試してみました。

コントローラ

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

ロガー.xml

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

最後に、 のすべてのログ レベルをコメント アウトしましたapplication.conf

于 2015-01-30T11:54:28.363 に答える