1

I'm using scala-based scalatra for web frameworks and I'm having trouble setting up logback.xml.

I set my logback.xml file in PROJECT_ROOT/src/main/resources/logback.xml like below

logback.xml

<configuration>
  <appender name="FILE" class="ch.qos.logback.core.FileAppender">
    <file>server_error.log</file>
    <append>true</append>
    <encoder>
      <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
    </encoder>
  </appender>

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

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

and I set javaOptions variable in build.sbt file like below

build.sbt

settings = ScalatraPlugin.scalatraSettings ++ scalateSettings ++ Seq(
    organization := Organization,
    name := Name,
    version := Version,
    scalaVersion := ScalaVersion,
    fork := true,
    javaOptions := Seq("-Dlogback.configurationFile=src/main/resources/logback.xml"),
    resolvers += Classpaths.typesafeReleases,
    libraryDependencies ++= Seq(
      "org.scalatra" %% "scalatra" % ScalatraVersion,
      "org.scalatra" %% "scalatra-scalate" % ScalatraVersion,
      "org.scalatra" %% "scalatra-specs2" % ScalatraVersion % "test",
      "ch.qos.logback" % "logback-classic" % "1.1.5" % "runtime",
      "org.eclipse.jetty" % "jetty-webapp" % "9.2.15.v20160210" % "container",
      "javax.servlet" % "javax.servlet-api" % "3.1.0" % "provided",
      "com.typesafe" % "config" % "1.3.1",
      "com.amazonaws" % "aws-java-sdk-dynamodb" % "1.11.142",
      "org.mongodb.scala" %% "mongo-scala-driver" % "1.2.1"
    )

Logging process works really fine when I run this project on local environment, but from production server I cannot find "server_error.log" file from anywhere that should be generated by logback.xml. I'm using aws elasticbeanstalk and deployed on elasticbeanstalk the .war file generated by using 'package' command from sbt.

yaboong
  • 157
  • 3
  • 18
  • try change file path to ${catalina.base}/logs/server_error.log - log files willl be in tomcat in logs folder – Victor1125 Jun 20 '17 at 12:42
  • You try put logs in PROJECT_ROOT/src/main/resources/logback.xml. Localy is possible, because you have this location. After export to .war this location is in zipped file, so you can not put there any file. You must change path to log files, which you have on your production server. – Victor1125 Jun 20 '17 at 13:35
  • I changed log file path to ${catalina.base}/server_eror.log and changed logback.xml location to /WEB-INF/logback.xml and also -Dlogback.configurationFile=logback.xml but it's still not working... – yaboong Jun 21 '17 at 02:22
  • Did you ever figure this out? I have a similar problem – PlexQ Aug 08 '18 at 23:22

0 Answers0