-<configuration scan="true">
+ <configuration scan="true">
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<maxHistory>1</maxHistory>
</rollingPolicy>
+ <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+ <maxFileSize>10MB</maxFileSize>
+ </triggeringPolicy>
+
<encoder>
<pattern>%date{"yyyy-MM-dd HH:mm:ss.SSS z"} [%thread] %-5level %logger{35} - %msg%n</pattern>
</encoder>
</appender>
-
+ <appender name="audit-file" class="ch.qos.logback.core.FileAppender">
+ <file>logs/audit.log</file>
+ <append>true</append>
+ <encoder>
+ <pattern>%date{"yyyy-MM-dd HH:mm:ss.SSS z"} %msg %n</pattern>
+ </encoder>
+ </appender>
<root level="error">
<appender-ref ref="STDOUT" />
<appender-ref ref="opendaylight.log" />
</root>
<!-- Base log level -->
+ <logger name="org.opendaylight" level="INFO"/>
+
+
+ <!-- Controller log level -->
<logger name="org.opendaylight.controller" level="INFO"/>
<!-- OSGi logging bridge -->
<logger name="org.opendaylight.controller.logging.bridge" level="WARN"/>
+ <logger name="org.opendaylight.controller.logging.bridge.internal" level="WARN"/>
+
+ <!-- Netty -->
+ <logger name="io.netty" level="WARN"/>
<!-- Openflow Protocol Plugin -->
<logger name="org.opendaylight.controller.protocol_plugin.openflow" level="INFO"/>
<logger name="org.opendaylight.controller.sal.implementation" level="INFO"/>
<logger name="org.opendaylight.controller.sal.implementation.internal.Inventory" level="INFO"/>
<logger name="org.opendaylight.controller.sal.implementation.internal.Topology" level="INFO"/>
+ <!-- remoterpc router and remoterpc routing table -->
+ <logger name="org.opendaylight.controller.sal.connector.remoterpc" level="INFO" />
<!-- Functional Modules -->
<logger name="org.opendaylight.controller.arphandler" level="INFO"/>
<logger name="org.opendaylight.controller.hosttracker" level="INFO"/>
<logger name="org.opendaylight.controller.usermanager" level="INFO"/>
<!-- Web modules -->
<logger name="org.opendaylight.controller.web" level="INFO"/>
+
+ <!--
+ Unsynchronized controller startup causes models to crop up in random
+ order, which results in temporary inability to fully resolve a model,
+ which is usually resolved. Do not flood console, but keep the messages,
+ as they may be indicating and error.
+ -->
+ <logger name="org.opendaylight.yangtools.yang.parser.util.ModuleDependencySort" level="INFO" additivity="false">
+ <appender-ref ref="opendaylight.log"/>
+ </logger>
+
+ <!-- To debug MD-SAL schema loading issues, uncomment this -->
+ <!--logger name="org.opendaylight.yangtools.yang.parser.impl.util.URLSchemaContextResolver" level="DEBUG"/>
+ <logger name="org.opendaylight.yangtools.sal.binding.generator.impl.RuntimeGeneratedMappingServiceImpl" level="TRACE"/-->
+
+ <!-- additivity=false ensures analytics data only goes to the analytics log -->
+ <logger name="audit" level="INFO" additivity="false">
+ <appender-ref ref="audit-file"/>
+ </logger>
</configuration>