I have formatted the logs generated by play using logger.xml
file in conf
folder to get the desired format. In my local environment when i am using the normal play commands like play ~run
or play -Dlogger.resource=logger.xml
start. But when i do packaging with play dist
and start the process with command sudo ./start -Dlogger.resource=logger.xml
it is printing default logs without any format.
logger.xml
<configuration>
<conversionRule conversionWord="coloredLevel" converterClass="play.api.Logger$ColoredLevel" />
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>${application.home}/logs/application.log</file>
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%level] %class:%method %msg%n </pattern>
</encoder>
</appender>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%level] %class:%method %msg%n </pattern>
</encoder>
</appender>
<root level="ERROR">
<appender-ref ref="STDOUT" />
<appender-ref ref="FILE" />
</root>
<logger name="application" level="debug" additivity="false">
<appender-ref ref="STDOUT"/>
<appender-ref ref="FILE"/>
</logger>
</configuration>
You seem to be using Play 2.0.x - 2.1.x based on the fact that you are using the
start
script generated byplay stage
orplay dist
. According to this section in the docs and assuming yourlogger.xml
is in yourconf
directory, then the suggested correct config for your file would be:However, it turns out that if you name your Logback config file
logger.xml
then Play seems to pick the defaultlogger.xml
config file from the classpath and not yours. Which is probably why the name of the config file in the docs is calledprod-logger.xml
and not justlogger.xml
, however that is not explicitly explained.So rename your
logger.xml
file to something else. For exampletest-logger.xml
and then the following will correctly pick your Logback config: