1

I have the following logback configuration:

<configuration>

  <conversionRule conversionWord="coloredLevel" converterClass="play.api.Logger$ColoredLevel" />

  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
      <pattern>%coloredLevel - %logger - %message%n%xException</pattern>
    </encoder>
  </appender>

  <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${user.home}/web/logs/lap.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- Daily rollover with compression -->
            <fileNamePattern>application-lap-log-%d{yyyy-MM-dd}.gz</fileNamePattern>
            <!-- keep 30 days worth of history -->
            <maxHistory>30</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>%date{yyyy-MM-dd HH:mm:ss ZZZZ} - [%level] - from %logger in %thread %n%message%n%xException%n</pattern>
        </encoder>
    </appender>

  <!--
    The logger name is typically the Java/Scala package name.
    This configures the log level to log at for a package and its children packages.
  -->
  <logger name="root" level="INFO" />
  <logger name="play" level="INFO" />
  <logger name="application" level="DEBUG" />

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

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

</configuration>

Then, in my class, I instantiate a logger as follows:

val logger = play.api.Logger("ApplicationMain")

But when using it, as such:

logger.info("Log something")

I get a NullPointerException (logger is null). I have read the Play Framework 2.4 documentation on logging but I have no idea what I'm doing wrong here. Any ideas?

Peter
  • 7,020
  • 4
  • 31
  • 51
  • 1
    Not certainly, but very likely you are invoking the logger from the constructor before it's initialized and hitting the same issue as https://stackoverflow.com/questions/33285655/direct-inheritance-of-trait-fails-but-proxy-works and https://stackoverflow.com/questions/33248520/scala-class-using-mutable-var-update-in-overriding-method/33266720#33266720. Try to make `logger` a `lazy val`. – Alexey Romanov Oct 26 '15 at 20:49

0 Answers0