<configuration debug="true">
<!--
See http://logback.qos.ch/manual/ for more information on how to
configure the Logback logging engine.
Available levels: ALL < TRACE < DEBUG < INFO < WARN < ERROR < OFF
-->
<!--
Let PMS decide the path for the logfile: either the current directory
or (when that is read only) the system temp directory.
-->
<define name="debugLogPath" class="net.pms.logging.DebugLogPathDefiner" />
<!-- Appender for messages in the PMS "Traces" tab -->
<appender name="traces" class="net.pms.logging.FrameAppender">
<!-- Only log INFO and higher -->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%-5level %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %msg%n</pattern>
</encoder>
</appender>
<!-- Appender for the console -->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<!-- Only log INFO and higher -->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%-5level %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %msg%n</pattern>
</encoder>
</appender>
<!--
Appender for the debug.log that will keep the file growing in size
until PMS is restarted.
-->
<appender name="debug.log" class="ch.qos.logback.core.FileAppender">
<!-- No threshold filtering, log everything the root logger allows -->
<file>${debugLogPath}${file.separator}debug.log</file>
<append>false</append> <!-- Start new debug.log on each application start -->
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%-5level %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %msg%n</pattern>
</encoder>
</appender>
<!--
Appender for the debug.log that will roll the debug.log file after 10 MBytes
and will keep a maximum of 5 old and compressed logs.
-->
<appender name="debug.log.10MB" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- No threshold filtering, log everything the root logger allows -->
<file>${debugLogPath}${file.separator}debug.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
<fileNamePattern>${debugLogPath}debug.log.%i.zip</fileNamePattern>
<minIndex>1</minIndex>
<maxIndex>5</maxIndex>
</rollingPolicy>
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<maxFileSize>10MB</maxFileSize>
</triggeringPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%-5level %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %msg%n</pattern>
</encoder>
</appender>
<!--
For debugging purposes it can be handy to define custom levels for
specific classes or packages. For example:
<logger name="net.pms.dlna.DLNAResource" level="ALL" />
<logger name="net.pms.network.RequestHandlerV2" level="ALL" />
<logger name="net.pms.util" level="ALL" />
-->
<!-- silence noise from external libraries -->
<logger name="org.apache" level="WARN" />
<logger name="httpclient.wire" level="WARN" />
<!-- Root logger defines the minimum log level for all loggers -->
<root level="TRACE">
<appender-ref ref="traces" />
<appender-ref ref="console" />
<!--
If unlimited growth of debug.log is not desired use the
appender-ref "debug.log.10MB" instead of "debug.log".
-->
<appender-ref ref="debug.log" />
<!-- <appender-ref ref="debug.log.10MB" /> -->
</root>
</configuration>