diff options
author | Vidya Shinde <vidya.shinde@amdocs.com> | 2017-09-22 21:03:43 +0530 |
---|---|---|
committer | Vidya Shinde <vidya.shinde@amdocs.com> | 2017-09-22 21:03:43 +0530 |
commit | 65f9feec471b1180b7e0d466ce198290a62fc07d (patch) | |
tree | 757a42cd0b21fb1a66eebcacf79216e973b773fc /onap/aai | |
parent | aa41076737c6f58f524d10c806904889ddc606d1 (diff) |
[LOG] Add canonicalization for AAI logs
Canonicalization of path for log provider configuration file and log files for new AAI components
Change-Id: I34611392f25cfcd0e7e180ef672f64d7dd20928a
Issue-ID: LOG-63
Signed-off-by: Vidya Shinde <vidya.shinde@amdocs.com>
Diffstat (limited to 'onap/aai')
-rw-r--r-- | onap/aai/README.md | 95 | ||||
-rw-r--r-- | onap/aai/aai-resources/conf/logback.xml | 345 | ||||
-rw-r--r-- | onap/aai/aai-search/conf/logback.xml | 188 | ||||
-rw-r--r-- | onap/aai/aai-sparky/conf/logback.xml | 174 | ||||
-rw-r--r-- | onap/aai/aai-traversal/conf/logback.xml | 345 | ||||
-rw-r--r-- | onap/aai/model-loader/conf/logback.xml | 15 |
6 files changed, 1132 insertions, 30 deletions
diff --git a/onap/aai/README.md b/onap/aai/README.md index a930eb9..2721df2 100644 --- a/onap/aai/README.md +++ b/onap/aai/README.md @@ -1,44 +1,97 @@ #################################################################################################################################################################### ## AAI Logging Configuration ==================================================================================================================================================================== -AAI has two docker containers- aai-service, hbase-1.2.3 and model-loader-service. +AAI has two vm instances +vm1-aai-inst1 has docker containers- testconfig_aai.searchservice.simpledemo.openecomp.org_1,testconfig_datarouter_1, +testconfig_aai-traversal.api.simpledemo.openecomp.org_1,testconfig_aai-resources.api.simpledemo.openecomp.org_1,testconfig_sparky-be_1,testconfig_model-loader_1, +vm1-aai-inst2 has docker containers- elasticsearch,testconfig_aai.gremlinserver.simpledemo.openecomp.org_1,testconfig_aai.hbase.simpledemo.openecomp.org_1. Each container has its own logback.xml Canonical logs will be generated at /var/log/onap/aai/ ==================================================================================================================================================================== ## Instructions for deployment ==================================================================================================================================================================== -### AAI logging deployment for aai-service +### AAI logging deployment for search_search.amdocs.lab_1 -------------------------------------------------------------------------------------------------------------------------------------------------------------------- - 1. Log provider file is available at the path, /etc/onap/aai/conf.d/, on the host VM. + 1. Create the log provider file path, /etc/onap/aai/conf.d/aai-search, on the host VM. 2. Copy the canonical ‘logback.xml’ from 'aai' directory (of gerrit) into the path created in step 1. - 3. Give the read access to 'others' for the file, /etc/onap/aai/conf.d/logback.xml. + 3. Give the read access to 'others' for the file, /etc/onap/aai/conf.d/aai-search/logback.xml. This will give access to the 'aaiadmin' user used by the AAI container to read this file. - 4. Create the canonical path for logs, /var/log/onap/aai, on the host VM. + 4. Create the canonical path for logs, /var/log/onap/aai/aai-search, on the host VM. 5. Provide write permissions for "others" users for directory created in step 4. 6. Volume-Mount: The aai container requires two host paths mapped as volume in the container - 6.1. Log file path: - Host path - /var/log/onap/aai/ mapped to - Container path - /var/log/onap/aai/ + 6.1. Log file path: + Host path - /var/log/onap/aai/aai-search mapped to + Container path - /var/log/onap/aai/aai-sdb 6.2. Log provider file path: - Host Path : /etc/onap/aai/conf.d/logback.xml mapped to - Container path : /opt/app/aai/bundleconfig/etc/logback.xml + Host Path : /etc/onap/aai/conf.d/aai-search/logback.xml mapped to + Container path : /opt/app/search-data-service/bundleconfig/etc/logback.xml ------------------------------------------------------------------------------------------------------------------------------------------------------------------- -### AAI logging deployment for Model-Loader +### AAI logging deployment for sparky_sparky.amdocs.lab_1 -------------------------------------------------------------------------------------------------------------------------------------------------------------------- - 1. Log provider file is available at the path, /opt/jetty/jetty*/webapps/model-loader/WEB-INF/classes/, in the container. - Note: Inside model-loader docker image. (jetty* refers to the particular version being used. - In release-1.0 environment, the name is '/jetty-distribution-9.3.9.v20160517') + 1. Create the log provider file path, /etc/onap/aai/conf.d/aai-sparky, on the host VM. 2. Copy the canonical ‘logback.xml’ from 'aai' directory (of gerrit) into the path created in step 1. - 3. Give the read access to 'others' for the file, /etc/onap/aai/conf.d/logback.xml. + 3. Give the read access to 'others' for the file, /etc/onap/aai/conf.d/aai-search/logback.xml. This will give access to the 'aaiadmin' user used by the AAI container to read this file. - 4. Create the canonical path for logs, /var/log/onap/aai/aai-ml, on the host VM. + 4. Create the canonical path for logs, /var/log/onap/aai/aai-sparky, on the host VM. 5. Provide write permissions for "others" users for directory created in step 4. - 6. Volume-Mount: The aai container requires one host path mapped as volume in the container + 6. Volume-Mount: The aai container requires two host paths mapped as volume in the container + + 6.1. Log file path: + Host path - /var/log/onap/aai/aai-sparky mapped to + Container path - /var/log/onap/aai/aai-ui + 6.2. Log provider file path: + Host Path : /etc/onap/aai/conf.d/aai-sparky/logback.xml mapped to + Container path : /opt/app/sparky/bundleconfig/etc/logback.xml +------------------------------------------------------------------------------------------------------------------------------------------------------------------- +### AAI logging deployment for modelloader_model-loader.amdocs.lab_1 +-------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 1. Create the log provider file path, /etc/onap/aai/conf.d/aai-model-loader, on the host VM. + 2. Copy the canonical ‘logback.xml’ from 'aai' directory (of gerrit) into the path created in step 1. + 3. Give the read access to 'others' for the file, /etc/onap/aai/conf.d/aai-model-loader/logback.xml. + This will give access to the 'aaiadmin' user used by the AAI container to read this file. + 4. Create the canonical path for logs, /var/log/onap/aai/aai-model-loader, on the host VM. + 5. Provide write permissions for "others" users for directory created in step 4. + 6. Volume-Mount: The aai container requires two host paths mapped as volume in the container + + 6.1. Log file path: + Host path - /var/log/onap/aai/aai-model-loader mapped to + Container path - /var/log/onap/aai/aai-ml + 6.2. Log provider file path: + Host Path : /etc/onap/aai/conf.d/aai-model-loader/logback.xml mapped to + Container path : /opt/app/model-loader/bundleconfig/etc/logback.xml +------------------------------------------------------------------------------------------------------------------------------------------------------------------- +### AAI logging deployment for testconfig_aai-traversal.api.simpledemo.openecomp.org_1 +-------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 1. Create the log provider file path, /etc/onap/aai/conf.d/aai-traversal, on the host VM. + 2. Copy the canonical ‘logback.xml’ from 'aai' directory (of gerrit) into the path created in step 1. + 3. Give the read access to 'others' for the file, /etc/onap/aai/conf.d/aai-traversal/logback.xml. + This will give access to the 'aaiadmin' user used by the AAI container to read this file. + 4. Create the canonical path for logs, /var/log/onap/aai/aai-traversal, on the host VM. + 5. Provide write permissions for "others" users for directory created in step 4. + 6. Volume-Mount: The aai container requires two host paths mapped as volume in the container + + 6.1. Log file path: + Host path - /var/log/onap/aai/aai-traversal mapped to + Container path - /var/log/onap/aai/ + 6.2. Log provider file path: + Host Path : /etc/onap/aai/conf.d/aai-traversal/logback.xml mapped to + Container path : /opt/app/aai-traversal/bundleconfig/etc/logback.xml +------------------------------------------------------------------------------------------------------------------------------------------------------------------- +### AAI logging deployment for testconfig_aai-resources.api.simpledemo.openecomp.org_1 +-------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 1. Create the log provider file path, /etc/onap/aai/conf.d/aai-resources, on the host VM. + 2. Copy the canonical ‘logback.xml’ from 'aai' directory (of gerrit) into the path created in step 1. + 3. Give the read access to 'others' for the file, /etc/onap/aai/conf.d/aai-resources/logback.xml. + This will give access to the 'aaiadmin' user used by the AAI container to read this file. + 4. Create the canonical path for logs, /var/log/onap/aai/aai-resources, on the host VM. + 5. Provide write permissions for "others" users for directory created in step 4. + 6. Volume-Mount: The aai container requires two host paths mapped as volume in the container - 6.1. Log file path: - Host path - /var/log/onap/aai/aai-ml mapped to - Container path - /var/log/onap/aai/aai-ml + 6.1. Log file path: + Host path - /var/log/onap/aai/aai-resources mapped to + Container path - /var/log/onap/aai/aai-resources 6.2. Log provider file path: - Note: Log provider path cannot be configured externally as it is bundled inside a WAR. + Host Path : /etc/onap/aai/conf.d/aai-resources/logback.xml mapped to + Container path : /opt/app/aai-resources/bundleconfig/etc/logback.xml #################################################################################################################################################################### diff --git a/onap/aai/aai-resources/conf/logback.xml b/onap/aai/aai-resources/conf/logback.xml new file mode 100644 index 0000000..bf334df --- /dev/null +++ b/onap/aai/aai-resources/conf/logback.xml @@ -0,0 +1,345 @@ +<configuration debug="false" scan="true" scanPeriod="3 seconds"> + <contextName>${module.ajsc.namespace.name}</contextName> + <jmxConfigurator /> + <property name="logDir" value="/var/log/onap" /> + <property name="componentName" value="aai"></property> + <property name="subcomponentName" value="aai-resources"></property> + <property name="restLogDirectory" value="${logDir}/${componentName}/${subcomponentName}/rest" /> + <property name="dmaapLogDirectory" value="${logDir}/${componentName}/${subcomponentName}/dmaapAAIEventConsumer" /> + <property name="perfLogsDirectory" value="${logDir}/${componentName}/${subcomponentName}/perf-audit" /> + <!-- default eelf log file names --> + <property name="errorLogName" value="error" /> + <property name="metricsLogName" value="metrics" /> + <property name="auditLogName" value="audit" /> + <property name="debugLogName" value="debug" /> + <property name="queueSize" value="256" /> + <property name="maxFileSize" value="50MB" /> + <property name="maxHistory" value="30" /> + <property name="totalSizeCap" value="10GB" /> + <property name="pattern" value="%d{"yyyy-MM-dd'T'HH:mm:ss.SSSXXX", UTC}\t[%thread]\t%-5level\t%logger\t%replace(%replace(%replace(%mdc){'\t','\\\\t'}){', ','\t'}){'\n', '\\\\n'}\t%replace(%replace(%msg){'\n', '\\\\n'}){'\t','\\\\t'}%n" /> + <appender class="ch.qos.logback.core.ConsoleAppender" name="STDOUT"> + <filter class="ch.qos.logback.classic.filter.LevelFilter"> + <level>ERROR</level> + <onMatch>ACCEPT</onMatch> + <onMismatch>DENY</onMismatch> + </filter> + <encoder> + <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{1024} - %msg%n</pattern> + </encoder> + </appender> + <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="SANE"> + <file>${restLogDirectory}/sane.log</file> + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> + <fileNamePattern>${restLogDirectory}/sane.%d{yyyy-MM-dd}.%i.log</fileNamePattern> + <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> + <maxFileSize>${maxFileSize}</maxFileSize> + </timeBasedFileNamingAndTriggeringPolicy> + <maxHistory>${maxHistory}</maxHistory> + <totalSizeCap>${totalSizeCap}</totalSizeCap> + </rollingPolicy> + <encoder> + <pattern>${pattern}</pattern> + </encoder> + </appender> + <appender class="ch.qos.logback.classic.AsyncAppender" name="asyncSANE"> + <queueSize>${queueSize}</queueSize> + <includeCallerData>true</includeCallerData> + <appender-ref ref="SANE" /> + </appender> + <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="METRIC"> + <filter class="ch.qos.logback.classic.filter.LevelFilter"> + <level>INFO</level> + <onMatch>ACCEPT</onMatch> + <onMismatch>DENY</onMismatch> + </filter> + <file>${restLogDirectory}/${metricsLogName}.log</file> + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> + <fileNamePattern>${restLogDirectory}/${metricsLogName}.%d{yyyy-MM-dd}.%i.log</fileNamePattern> + <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> + <maxFileSize>${maxFileSize}</maxFileSize> + </timeBasedFileNamingAndTriggeringPolicy> + <maxHistory>${maxHistory}</maxHistory> + <totalSizeCap>${totalSizeCap}</totalSizeCap> + </rollingPolicy> + <encoder class="org.openecomp.aai.logging.EcompEncoder"> + <pattern>${pattern}</pattern> + </encoder> + </appender> + <appender class="ch.qos.logback.classic.AsyncAppender" name="asyncMETRIC"> + <queueSize>${queueSize}</queueSize> + <includeCallerData>true</includeCallerData> + <appender-ref ref="METRIC" /> + </appender> + <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="DEBUG"> + <filter class="ch.qos.logback.classic.filter.LevelFilter"> + <level>DEBUG</level> + <onMatch>ACCEPT</onMatch> + <onMismatch>DENY</onMismatch> + </filter> + <file>${restLogDirectory}/${debugLogName}.log</file> + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> + <fileNamePattern>${restLogDirectory}/${debugLogName}.%d{yyyy-MM-dd}.%i.log</fileNamePattern> + <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> + <maxFileSize>${maxFileSize}</maxFileSize> + </timeBasedFileNamingAndTriggeringPolicy> + <maxHistory>${maxHistory}</maxHistory> + <totalSizeCap>${totalSizeCap}</totalSizeCap> + </rollingPolicy> + <encoder class="org.openecomp.aai.logging.EcompEncoder"> + <pattern>${pattern}</pattern> + </encoder> + </appender> + <appender class="ch.qos.logback.classic.AsyncAppender" name="asyncDEBUG"> + <queueSize>${queueSize}</queueSize> + <includeCallerData>true</includeCallerData> + <appender-ref ref="DEBUG" /> + </appender> + <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="ERROR"> + <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> + <level>WARN</level> + </filter> + <file>${restLogDirectory}/${errorLogName}.log</file> + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> + <fileNamePattern>${restLogDirectory}/${errorLogName}.%d{yyyy-MM-dd}.%i.log</fileNamePattern> + <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> + <maxFileSize>${maxFileSize}</maxFileSize> + </timeBasedFileNamingAndTriggeringPolicy> + <maxHistory>${maxHistory}</maxHistory> + <totalSizeCap>${totalSizeCap}</totalSizeCap> + </rollingPolicy> + <encoder class="org.openecomp.aai.logging.EcompEncoder"> + <pattern>${pattern}</pattern> + </encoder> + </appender> + <appender class="ch.qos.logback.classic.AsyncAppender" name="asyncERROR"> + <queueSize>${queueSize}</queueSize> + <includeCallerData>true</includeCallerData> + <appender-ref ref="ERROR" /> + </appender> + <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="AUDIT"> + <file>${restLogDirectory}/${auditLogName}.log</file> + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> + <fileNamePattern>${restLogDirectory}/${auditLogName}.%d{yyyy-MM-dd}.%i.log</fileNamePattern> + <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> + <maxFileSize>${maxFileSize}</maxFileSize> + </timeBasedFileNamingAndTriggeringPolicy> + <maxHistory>${maxHistory}</maxHistory> + <totalSizeCap>${totalSizeCap}</totalSizeCap> + </rollingPolicy> + <encoder class="org.openecomp.aai.logging.EcompEncoder"> + <pattern>${pattern}</pattern> + </encoder> + </appender> + <appender class="ch.qos.logback.classic.AsyncAppender" name="asyncAUDIT"> + <queueSize>${queueSize}</queueSize> + <includeCallerData>true</includeCallerData> + <appender-ref ref="AUDIT" /> + </appender> + <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="translog"> + <filter class="ch.qos.logback.classic.filter.LevelFilter"> + <level>DEBUG</level> + <onMatch>ACCEPT</onMatch> + <onMismatch>DENY</onMismatch> + </filter> + <file>${restLogDirectory}/translog.log</file> + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> + <fileNamePattern>${restLogDirectory}/translog.%d{yyyy-MM-dd}.%i.log</fileNamePattern> + <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> + <maxFileSize>${maxFileSize}</maxFileSize> + </timeBasedFileNamingAndTriggeringPolicy> + <maxHistory>${maxHistory}</maxHistory> + <totalSizeCap>${totalSizeCap}</totalSizeCap> + </rollingPolicy> + <encoder class="org.openecomp.aai.logging.EcompEncoder"> + <pattern>${pattern}</pattern> + </encoder> + </appender> + <appender class="ch.qos.logback.classic.AsyncAppender" name="asynctranslog"> + <queueSize>${queueSize}</queueSize> + <includeCallerData>true</includeCallerData> + <appender-ref ref="translog" /> + </appender> + <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="dmaapAAIEventConsumer"> + <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> + <level>WARN</level> + </filter> + <File>${dmaapLogDirectory}/${errorLogName}.log</File> + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> + <fileNamePattern>${dmaapLogDirectory}/${errorLogName}.%d{yyyy-MM-dd}.%i.log</fileNamePattern> + <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> + <maxFileSize>${maxFileSize}</maxFileSize> + </timeBasedFileNamingAndTriggeringPolicy> + <maxHistory>${maxHistory}</maxHistory> + <totalSizeCap>${totalSizeCap}</totalSizeCap> + </rollingPolicy> + <encoder class="org.openecomp.aai.logging.EcompEncoder"> + <pattern>${pattern}</pattern> + </encoder> + </appender> + <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="dmaapAAIEventConsumerDebug"> + <filter class="ch.qos.logback.classic.filter.LevelFilter"> + <level>DEBUG</level> + <onMatch>ACCEPT</onMatch> + <onMismatch>DENY</onMismatch> + </filter> + <File>${dmaapLogDirectory}/${debugLogName}.log</File> + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> + <fileNamePattern>${dmaapLogDirectory}/${debugLogName}.%d{yyyy-MM-dd}.%i.log</fileNamePattern> + <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> + <maxFileSize>${maxFileSize}</maxFileSize> + </timeBasedFileNamingAndTriggeringPolicy> + <maxHistory>${maxHistory}</maxHistory> + <totalSizeCap>${totalSizeCap}</totalSizeCap> + </rollingPolicy> + <encoder class="org.openecomp.aai.logging.EcompEncoder"> + <pattern>${pattern}</pattern> + </encoder> + </appender> + <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="dmaapAAIEventConsumerMetric"> + <filter class="ch.qos.logback.classic.filter.LevelFilter"> + <level>INFO</level> + <onMatch>ACCEPT</onMatch> + <onMismatch>DENY</onMismatch> + </filter> + <File>${dmaapLogDirectory}/${metricsLogName}.log</File> + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> + <fileNamePattern>${dmaapLogDirectory}/${metricsLogName}.%d{yyyy-MM-dd}.%i.log</fileNamePattern> + <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> + <maxFileSize>${maxFileSize}</maxFileSize> + </timeBasedFileNamingAndTriggeringPolicy> + <maxHistory>${maxHistory}</maxHistory> + <totalSizeCap>${totalSizeCap}</totalSizeCap> + </rollingPolicy> + <encoder class="org.openecomp.aai.logging.EcompEncoder"> + <pattern>${pattern}</pattern> + </encoder> + </appender> + <!-- Spring related loggers --> + <logger level="WARN" name="org.springframework" /> + <logger level="WARN" name="org.springframework.beans" /> + <logger level="WARN" name="org.springframework.web" /> + <logger level="WARN" name="com.blog.spring.jms" /> + <!-- AJSC Services (bootstrap services) --> + <logger level="WARN" name="ajsc" /> + <logger level="WARN" name="ajsc.RouteMgmtService" /> + <logger level="WARN" name="ajsc.ComputeService" /> + <logger level="WARN" name="ajsc.VandelayService" /> + <logger level="WARN" name="ajsc.FilePersistenceService" /> + <logger level="WARN" name="ajsc.UserDefinedJarService" /> + <logger level="WARN" name="ajsc.UserDefinedBeansDefService" /> + <logger level="WARN" name="ajsc.LoggingConfigurationService" /> + <!-- AJSC related loggers (DME2 Registration, csi logging, restlet, servlet + logging) --> + <logger level="WARN" name="ajsc.utils" /> + <logger level="WARN" name="ajsc.utils.DME2Helper" /> + <logger level="WARN" name="ajsc.filters" /> + <logger level="WARN" name="ajsc.beans.interceptors" /> + <logger level="WARN" name="ajsc.restlet" /> + <logger level="WARN" name="ajsc.servlet" /> + <logger level="WARN" name="com.att.ajsc" /> + <logger level="WARN" name="com.att.ajsc.csi.logging" /> + <logger level="WARN" name="com.att.ajsc.filemonitor" /> + <!-- Other Loggers that may help troubleshoot --> + <logger level="WARN" name="net.sf" /> + <logger level="WARN" name="org.apache.commons.httpclient" /> + <logger level="WARN" name="org.apache.commons" /> + <logger level="WARN" name="org.apache.coyote" /> + <logger level="WARN" name="org.apache.jasper" /> + <!-- Camel Related Loggers (including restlet/servlet/jaxrs/cxf logging. + May aid in troubleshooting) --> + <logger level="WARN" name="org.apache.camel" /> + <logger level="WARN" name="org.apache.cxf" /> + <logger level="WARN" name="org.apache.camel.processor.interceptor" /> + <logger level="WARN" name="org.apache.cxf.jaxrs.interceptor" /> + <logger level="WARN" name="org.apache.cxf.service" /> + <logger level="WARN" name="org.restlet" /> + <logger level="WARN" name="org.apache.camel.component.restlet" /> + <!-- logback internals logging --> + <logger level="WARN" name="ch.qos.logback.classic" /> + <logger level="WARN" name="ch.qos.logback.core" /> + <!-- logback jms appenders & loggers definition starts here --> + <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="auditLogs"> + <filter class="ch.qos.logback.classic.filter.ThresholdFilter" /> + <file>${perfLogsDirectory}/Audit.log</file> + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> + <fileNamePattern>${perfLogsDirectory}/Audit.%d{yyyy-MM-dd}.%i.log</fileNamePattern> + <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> + <maxFileSize>${maxFileSize}</maxFileSize> + </timeBasedFileNamingAndTriggeringPolicy> + <maxHistory>${maxHistory}</maxHistory> + <totalSizeCap>${totalSizeCap}</totalSizeCap> + </rollingPolicy> + <encoder> + <pattern>${pattern}</pattern> + </encoder> + </appender> + <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="perfLogs"> + <filter class="ch.qos.logback.classic.filter.ThresholdFilter" /> + <file>${perfLogsDirectory}/Perform.log</file> + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> + <fileNamePattern>${perfLogsDirectory}/Perform.%d{yyyy-MM-dd}.%i.log</fileNamePattern> + <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> + <maxFileSize>${maxFileSize}</maxFileSize> + </timeBasedFileNamingAndTriggeringPolicy> + <maxHistory>${maxHistory}</maxHistory> + <totalSizeCap>${totalSizeCap}</totalSizeCap> + </rollingPolicy> + <encoder> + <pattern>${pattern}</pattern> + </encoder> + </appender> + <appender class="ch.qos.logback.classic.AsyncAppender" name="ASYNC-audit"> + <queueSize>${queueSize}</queueSize> + <includeCallerData>true</includeCallerData> + <discardingThreshold>0</discardingThreshold> + <appender-ref ref="Audit-Record-Queue" /> + </appender> + <appender class="ch.qos.logback.classic.AsyncAppender" name="ASYNC-perf"> + <queueSize>${queueSize}</queueSize> + <includeCallerData>true</includeCallerData> + <discardingThreshold>0</discardingThreshold> + <appender-ref ref="Performance-Tracker-Queue" /> + </appender> + <logger additivity="false" level="INFO" name="AuditRecord"> + <appender-ref ref="ASYNC-audit" /> + <appender-ref ref="auditLogs" /> + </logger> + <logger additivity="false" level="INFO" name="AuditRecord_DirectCall"> + <appender-ref ref="ASYNC-audit" /> + <appender-ref ref="auditLogs" /> + </logger> + <logger additivity="false" level="INFO" name="PerfTrackerRecord"> + <appender-ref ref="ASYNC-perf" /> + <appender-ref ref="perfLogs" /> + </logger> + <!-- logback jms appenders & loggers definition ends here --> + <logger additivity="false" level="DEBUG" name="org.openecomp.aai.interceptors"> + <appender-ref ref="asynctranslog" /> + </logger> + <logger level="DEBUG" name="org.openecomp.aai.interceptors.PreAaiAjscInterceptor"> + <appender-ref ref="asyncAUDIT" /> + </logger> + <logger level="DEBUG" name="org.openecomp.aai.interceptors.PostAaiAjscInterceptor"> + <appender-ref ref="asyncAUDIT" /> + </logger> + <logger additivity="false" level="DEBUG" name="org.openecomp.aai.dmaap"> + <appender-ref ref="dmaapAAIEventConsumer" /> + <appender-ref ref="dmaapAAIEventConsumerDebug" /> + <appender-ref ref="dmaapAAIEventConsumerMetric" /> + </logger> + <logger level="WARN" name="org.apache" /> + <logger level="WARN" name="org.zookeeper" /> + <logger level="WARN" name="com.thinkaurelius" /> + <!-- ============================================================================ --> + <!-- General EELF logger --> + <!-- ============================================================================ --> + <logger additivity="false" level="WARN" name="com.att.eelf"> + <appender-ref ref="asyncDEBUG" /> + <appender-ref ref="asyncERROR" /> + <appender-ref ref="asyncMETRIC" /> + <appender-ref ref="asyncAUDIT" /> + </logger> + <root level="INFO"> + <appender-ref ref="asyncDEBUG" /> + </root> +</configuration> diff --git a/onap/aai/aai-search/conf/logback.xml b/onap/aai/aai-search/conf/logback.xml new file mode 100644 index 0000000..14ed414 --- /dev/null +++ b/onap/aai/aai-search/conf/logback.xml @@ -0,0 +1,188 @@ +<configuration debug="false" scan="true" scanPeriod="3 seconds"> + <!--<jmxConfigurator /> --> + <!-- directory path for all other type logs --> + <property name="logDir" value="/var/log/onap" /> + <property name="componentName" value="aai"></property> + <property name="subcomponentName" value="aai-sdb" /> + <property name="logDirectory" value="${logDir}/${componentName}/${subcomponentName}" /> + <!-- default eelf log file names --> + <property name="errorLogName" value="error" /> + <property name="metricsLogName" value="metrics" /> + <property name="auditLogName" value="audit" /> + <property name="debugLogName" value="debug" /> + <property name="queueSize" value="256" /> + <property name="maxFileSize" value="50MB" /> + <property name="maxHistory" value="30" /> + <property name="totalSizeCap" value="10GB" /> + <property name="pattern" value="%d{"yyyy-MM-dd'T'HH:mm:ss.SSSXXX", UTC}\t[%thread]\t%-5level\t%logger\t%replace(%replace(%replace(%mdc){'\t','\\\\t'}){', ','\t'}){'\n', '\\\\n'}\t%replace(%replace(%msg){'\n', '\\\\n'}){'\t','\\\\t'}%n" /> + <!-- Example evaluator filter applied against console appender --> + <appender class="ch.qos.logback.core.ConsoleAppender" name="STDOUT"> + <encoder> + <pattern>${pattern}</pattern> + </encoder> + </appender> + <!-- ============================================================================ --> + <!-- EELF Appenders --> + <!-- ============================================================================ --> + <!-- The EELFAppender is used to record events to the general application + log --> + <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="EELF"> + <file>${logDirectory}/${errorLogName}.log</file> + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> + <fileNamePattern>${logDirectory}/${errorLogName}.%d{yyyy-MM-dd}.%i.log</fileNamePattern> + <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> + <maxFileSize>${maxFileSize}</maxFileSize> + </timeBasedFileNamingAndTriggeringPolicy> + <maxHistory>${maxHistory}</maxHistory> + <totalSizeCap>${totalSizeCap}</totalSizeCap> + </rollingPolicy> + <encoder> + <pattern>${pattern}</pattern> + </encoder> + </appender> + <appender class="ch.qos.logback.classic.AsyncAppender" name="asyncEELF"> + <!-- deny all events with a level below INFO, that is TRACE and DEBUG --> + <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> + <level>INFO</level> + </filter> + <queueSize>${queueSize}</queueSize> + <appender-ref ref="EELF" /> + </appender> + <!-- EELF Audit Appender. This appender is used to record audit engine + related logging events. The audit logger and appender are specializations + of the EELF application root logger and appender. This can be used to segregate + Policy engine events from other components, or it can be eliminated to record + these events as part of the application root log. --> + <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="EELFAudit"> + <file>${logDirectory}/${auditLogName}.log</file> + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> + <fileNamePattern>${logDirectory}/${auditLogName}.%d{yyyy-MM-dd}.%i.log</fileNamePattern> + <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> + <maxFileSize>${maxFileSize}</maxFileSize> + </timeBasedFileNamingAndTriggeringPolicy> + <maxHistory>${maxHistory}</maxHistory> + <totalSizeCap>${totalSizeCap}</totalSizeCap> + </rollingPolicy> + <encoder> + <pattern>${pattern}</pattern> + </encoder> + </appender> + <appender class="ch.qos.logback.classic.AsyncAppender" name="asyncEELFAudit"> + <queueSize>${queueSize}</queueSize> + <appender-ref ref="EELFAudit" /> + </appender> + <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="EELFMetrics"> + <file>${logDirectory}/${metricsLogName}.log</file> + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> + <fileNamePattern>${logDirectory}/${metricsLogName}.%d{yyyy-MM-dd}.%i.log</fileNamePattern> + <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> + <maxFileSize>${maxFileSize}</maxFileSize> + </timeBasedFileNamingAndTriggeringPolicy> + <maxHistory>${maxHistory}</maxHistory> + <totalSizeCap>${totalSizeCap}</totalSizeCap> + </rollingPolicy> + <encoder> + <!-- <pattern>"%d{HH:mm:ss.SSS} [%thread] %-5level %logger{1024} - + %msg%n"</pattern> --> + <pattern>${pattern}</pattern> + </encoder> + </appender> + <appender class="ch.qos.logback.classic.AsyncAppender" name="asyncEELFMetrics"> + <queueSize>${queueSize}</queueSize> + <appender-ref ref="EELFMetrics" /> + </appender> + <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="EELFDebug"> + <file>${logDirectory}/${debugLogName}.log</file> + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> + <fileNamePattern>${logDirectory}/${debugLogName}.%d{yyyy-MM-dd}.%i.log</fileNamePattern> + <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> + <maxFileSize>${maxFileSize}</maxFileSize> + </timeBasedFileNamingAndTriggeringPolicy> + <maxHistory>${maxHistory}</maxHistory> + <totalSizeCap>${totalSizeCap}</totalSizeCap> + </rollingPolicy> + <encoder> + <pattern>${pattern}</pattern> + </encoder> + </appender> + <appender class="ch.qos.logback.classic.AsyncAppender" name="asyncEELFDebug"> + <queueSize>${queueSize}</queueSize> + <appender-ref ref="EELFDebug" /> + <includeCallerData>false</includeCallerData> + </appender> + <!-- ============================================================================ --> + <!-- EELF loggers --> + <!-- ============================================================================ --> + <logger additivity="false" level="info" name="com.att.eelf"> + <appender-ref ref="asyncEELF" /> + <appender-ref ref="asyncEELFDebug" /> + </logger> + <logger additivity="false" level="info" name="com.att.eelf.security"> + <appender-ref ref="asyncEELFSecurity" /> + </logger> + <logger additivity="false" level="info" name="com.att.eelf.perf"> + <appender-ref ref="asyncEELFPerformance" /> + </logger> + <logger additivity="false" level="info" name="com.att.eelf.server"> + <appender-ref ref="asyncEELFServer" /> + </logger> + <logger additivity="false" level="info" name="com.att.eelf.policy"> + <appender-ref ref="asyncEELFPolicy" /> + </logger> + <logger additivity="false" level="info" name="com.att.eelf.audit"> + <appender-ref ref="asyncEELFAudit" /> + </logger> + <logger additivity="false" level="info" name="com.att.eelf.metrics"> + <appender-ref ref="asyncEELFMetrics" /> + </logger> + <!-- Spring related loggers --> + <logger level="WARN" name="org.springframework" /> + <logger level="WARN" name="org.springframework.beans" /> + <logger level="WARN" name="org.springframework.web" /> + <logger level="WARN" name="com.blog.spring.jms" /> + <!-- AJSC Services (bootstrap services) --> + <logger level="WARN" name="ajsc" /> + <logger level="WARN" name="ajsc.RouteMgmtService" /> + <logger level="WARN" name="ajsc.ComputeService" /> + <logger level="WARN" name="ajsc.VandelayService" /> + <logger level="WARN" name="ajsc.FilePersistenceService" /> + <logger level="WARN" name="ajsc.UserDefinedJarService" /> + <logger level="WARN" name="ajsc.UserDefinedBeansDefService" /> + <logger level="WARN" name="ajsc.LoggingConfigurationService" /> + <logger level="WARN" name="ajsc.ErrorMessageLookupService" /> + <!-- AJSC related loggers (DME2 Registration, csi logging, restlet, servlet + logging) --> + <logger level="WARN" name="ajsc.utils" /> + <logger level="WARN" name="ajsc.utils.DME2Helper" /> + <logger level="WARN" name="ajsc.filters" /> + <logger level="WARN" name="ajsc.beans.interceptors" /> + <logger level="WARN" name="ajsc.restlet" /> + <logger level="WARN" name="ajsc.servlet" /> + <logger level="INFO" name="com.att" /> + <logger level="WARN" name="com.att.ajsc.csi.logging" /> + <logger level="WARN" name="com.att.ajsc.filemonitor" /> + <!-- SearchDB loggers --> + <logger level="INFO" name="org.openecomp.sa" /> + <!-- Other Loggers that may help troubleshoot --> + <logger level="WARN" name="net.sf" /> + <logger level="WARN" name="org.apache.commons.httpclient" /> + <logger level="WARN" name="org.apache.commons" /> + <logger level="WARN" name="org.apache.coyote" /> + <logger level="WARN" name="org.apache.jasper" /> + <!-- Camel Related Loggers (including restlet/servlet/jaxrs/cxf logging. + May aid in troubleshooting) --> + <logger level="WARN" name="org.apache.camel" /> + <logger level="WARN" name="org.apache.cxf" /> + <logger level="WARN" name="org.apache.camel.processor.interceptor" /> + <logger level="WARN" name="org.apache.cxf.jaxrs.interceptor" /> + <logger level="WARN" name="org.apache.cxf.service" /> + <logger level="WARN" name="org.restlet" /> + <logger level="WARN" name="org.apache.camel.component.restlet" /> + <!-- logback internals logging --> + <logger level="WARN" name="ch.qos.logback.classic" /> + <logger level="WARN" name="ch.qos.logback.core" /> + <root> + <appender-ref ref="asyncEELF" /> + <!-- <appender-ref ref="asyncEELFDebug" /> --> + </root> +</configuration> diff --git a/onap/aai/aai-sparky/conf/logback.xml b/onap/aai/aai-sparky/conf/logback.xml new file mode 100644 index 0000000..ca6d1a9 --- /dev/null +++ b/onap/aai/aai-sparky/conf/logback.xml @@ -0,0 +1,174 @@ +<configuration debug="false" scan="true" scanPeriod="3 seconds"> + <!--<jmxConfigurator /> --> + <!-- directory path for all other type logs --> + <property name="logDir" value="/var/log/onap" /> + <property name="componentName" value="aai"></property> + <property name="subcomponentName" value="aai-ui" /> + <property name="logDirectory" value="${logDir}/${componentName}/${subcomponentName}" /> + <!-- default eelf log file names --> + <property name="errorLogName" value="error" /> + <property name="metricsLogName" value="metrics" /> + <property name="auditLogName" value="audit" /> + <property name="debugLogName" value="debug" /> + <property name="queueSize" value="256" /> + <property name="maxFileSize" value="50MB" /> + <property name="maxHistory" value="30" /> + <property name="totalSizeCap" value="10GB" /> + <property name="pattern" value="%d{"yyyy-MM-dd'T'HH:mm:ss.SSSXXX", UTC}\t[%thread]\t%-5level\t%logger\t%replace(%replace(%replace(%mdc){'\t','\\\\t'}){', ','\t'}){'\n', '\\\\n'}\t%replace(%replace(%msg){'\n', '\\\\n'}){'\t','\\\\t'}%n" /> + <!-- Example evaluator filter applied against console appender --> + <appender class="ch.qos.logback.core.ConsoleAppender" name="STDOUT"> + <encoder> + <pattern>${pattern}</pattern> + </encoder> + </appender> + <!-- ============================================================================ --> + <!-- EELF Appenders --> + <!-- ============================================================================ --> + <!-- The EELFAppender is used to record events to the general application + log --> + <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="EELF"> + <file>${logDirectory}/${errorLogName}.log</file> + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> + <fileNamePattern>${logDirectory}/${errorLogName}.%d{yyyy-MM-dd}.%i.log</fileNamePattern> + <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> + <maxFileSize>${maxFileSize}</maxFileSize> + </timeBasedFileNamingAndTriggeringPolicy> + <maxHistory>${maxHistory}</maxHistory> + <totalSizeCap>${totalSizeCap}</totalSizeCap> + </rollingPolicy> + <encoder> + <pattern>${pattern}</pattern> + </encoder> + </appender> + <appender class="ch.qos.logback.classic.AsyncAppender" name="asyncEELF"> + <!-- deny all events with a level below INFO, that is TRACE and DEBUG --> + <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> + <level>INFO</level> + </filter> + <queueSize>${queueSize}</queueSize> + <appender-ref ref="EELF" /> + </appender> + <!-- EELF Audit Appender. This appender is used to record audit engine + related logging events. The audit logger and appender are specializations + of the EELF application root logger and appender. This can be used to segregate + Policy engine events from other components, or it can be eliminated to record + these events as part of the application root log. --> + <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="EELFAudit"> + <file>${logDirectory}/${auditLogName}.log</file> + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> + <fileNamePattern>${logDirectory}/${auditLogName}.%d{yyyy-MM-dd}.%i.log</fileNamePattern> + <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> + <maxFileSize>${maxFileSize}</maxFileSize> + </timeBasedFileNamingAndTriggeringPolicy> + <maxHistory>${maxHistory}</maxHistory> + <totalSizeCap>${totalSizeCap}</totalSizeCap> + </rollingPolicy> + <encoder> + <pattern>${pattern}</pattern> + </encoder> + </appender> + <appender class="ch.qos.logback.classic.AsyncAppender" name="asyncEELFAudit"> + <queueSize>${queueSize}</queueSize> + <appender-ref ref="EELFAudit" /> + </appender> + <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="EELFMetrics"> + <file>${logDirectory}/${metricsLogName}.log</file> + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> + <fileNamePattern>${logDirectory}/${metricsLogName}.%d{yyyy-MM-dd}.%i.log</fileNamePattern> + <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> + <maxFileSize>${maxFileSize}</maxFileSize> + </timeBasedFileNamingAndTriggeringPolicy> + <maxHistory>${maxHistory}</maxHistory> + <totalSizeCap>${totalSizeCap}</totalSizeCap> + </rollingPolicy> + <encoder> + <!-- <pattern>"%d{HH:mm:ss.SSS} [%thread] %-5level %logger{1024} - + %msg%n"</pattern> --> + <pattern>${pattern}</pattern> + </encoder> + </appender> + <appender class="ch.qos.logback.classic.AsyncAppender" name="asyncEELFMetrics"> + <queueSize>${queueSize}</queueSize> + <appender-ref ref="EELFMetrics" /> + </appender> + <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="EELFDebug"> + <file>${logDirectory}/${debugLogName}.log</file> + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> + <fileNamePattern>${logDirectory}/${debugLogName}.%d{yyyy-MM-dd}.%i.log</fileNamePattern> + <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> + <maxFileSize>${maxFileSize}</maxFileSize> + </timeBasedFileNamingAndTriggeringPolicy> + <maxHistory>${maxHistory}</maxHistory> + <totalSizeCap>${totalSizeCap}</totalSizeCap> + </rollingPolicy> + <encoder> + <pattern>${pattern}</pattern> + </encoder> + </appender> + <appender class="ch.qos.logback.classic.AsyncAppender" name="asyncEELFDebug"> + <queueSize>${queueSize}</queueSize> + <appender-ref ref="EELFDebug" /> + <includeCallerData>false</includeCallerData> + </appender> + <!-- ============================================================================ --> + <!-- EELF loggers --> + <!-- ============================================================================ --> + <logger level="INFO" name="com.att.ecomp" /> + <logger level="WARN" name="org.elasticsearch.plugins" /> + <logger additivity="false" level="info" name="com.att.ecomp.audit"> + <appender-ref ref="asyncEELFAudit" /> + </logger> + <logger additivity="false" level="info" name="com.att.ecomp.metrics"> + <appender-ref ref="asyncEELFMetrics" /> + </logger> + <!-- Spring related loggers --> + <logger level="WARN" name="org.springframework" /> + <logger level="WARN" name="org.springframework.beans" /> + <logger level="WARN" name="org.springframework.web" /> + <logger level="WARN" name="com.blog.spring.jms" /> + <!-- AJSC Services (bootstrap services) --> + <logger level="WARN" name="ajsc" /> + <logger level="WARN" name="ajsc.RouteMgmtService" /> + <logger level="WARN" name="ajsc.ComputeService" /> + <logger level="WARN" name="ajsc.VandelayService" /> + <logger level="WARN" name="ajsc.FilePersistenceService" /> + <logger level="WARN" name="ajsc.UserDefinedJarService" /> + <logger level="WARN" name="ajsc.UserDefinedBeansDefService" /> + <logger level="WARN" name="ajsc.LoggingConfigurationService" /> + <logger level="WARN" name="ajsc.ErrorMessageLookupService" /> + <!-- AJSC related loggers (DME2 Registration, csi logging, restlet, servlet + logging) --> + <logger level="WARN" name="ajsc.utils" /> + <logger level="WARN" name="ajsc.utils.DME2Helper" /> + <logger level="WARN" name="ajsc.filters" /> + <logger level="WARN" name="ajsc.beans.interceptors" /> + <logger level="WARN" name="ajsc.restlet" /> + <logger level="WARN" name="ajsc.servlet" /> + <logger level="WARN" name="com.att" /> + <logger level="WARN" name="com.att.ajsc.csi.logging" /> + <logger level="WARN" name="com.att.ajsc.filemonitor" /> + <!-- Other Loggers that may help troubleshoot --> + <logger level="WARN" name="net.sf" /> + <logger level="WARN" name="org.apache.commons.httpclient" /> + <logger level="WARN" name="org.apache.commons" /> + <logger level="WARN" name="org.apache.coyote" /> + <logger level="WARN" name="org.apache.jasper" /> + <!-- Camel Related Loggers (including restlet/servlet/jaxrs/cxf logging. + May aid in troubleshooting) --> + <logger level="WARN" name="org.apache.camel" /> + <logger level="WARN" name="org.apache.cxf" /> + <logger level="WARN" name="org.apache.camel.processor.interceptor" /> + <logger level="WARN" name="org.apache.cxf.jaxrs.interceptor" /> + <logger level="WARN" name="org.apache.cxf.service" /> + <logger level="WARN" name="org.restlet" /> + <logger level="WARN" name="org.apache.camel.component.restlet" /> + <!-- logback internals logging --> + <logger level="DEBUG" name="ch.qos.logback.classic" /> + <logger level="DEBUG" name="ch.qos.logback.core" /> + <root level="INFO"> + <appender-ref ref="asyncEELF" /> + <!-- <appender-ref ref="asyncEELFDebug" /> --> + </root> + + +</configuration> diff --git a/onap/aai/aai-traversal/conf/logback.xml b/onap/aai/aai-traversal/conf/logback.xml new file mode 100644 index 0000000..825fac9 --- /dev/null +++ b/onap/aai/aai-traversal/conf/logback.xml @@ -0,0 +1,345 @@ +<configuration debug="false" scan="true" scanPeriod="3 seconds"> + <contextName>${module.ajsc.namespace.name}</contextName> + <jmxConfigurator /> + <property name="logDir" value="/var/log/onap" /> + <property name="componentName" value="aai"></property> + <property name="restLogDirectory" value="${logDir}/${componentName}/rest" /> + <property name="dmaapLogDirectory" value="${logDir}/${componentName}/dmaapAAIEventConsumer" /> + <property name="perfLogsDirectory" value="${logDir}/${componentName}/perf-audit" /> + <!-- default eelf log file names --> + <property name="errorLogName" value="error" /> + <property name="metricsLogName" value="metrics" /> + <property name="auditLogName" value="audit" /> + <property name="debugLogName" value="debug" /> + <property name="queueSize" value="256" /> + <property name="maxFileSize" value="50MB" /> + <property name="maxHistory" value="30" /> + <property name="totalSizeCap" value="10GB" /> + <property name="pattern" value="%d{"yyyy-MM-dd'T'HH:mm:ss.SSSXXX", UTC}\t[%thread]\t%-5level\t%logger\t%replace(%replace(%replace(%mdc){'\t','\\\\t'}){', ','\t'}){'\n', '\\\\n'}\t%replace(%replace(%msg){'\n', '\\\\n'}){'\t','\\\\t'}%n" /> + <appender class="ch.qos.logback.core.ConsoleAppender" name="STDOUT"> + <filter class="ch.qos.logback.classic.filter.LevelFilter"> + <level>ERROR</level> + <onMatch>ACCEPT</onMatch> + <onMismatch>DENY</onMismatch> + </filter> + <encoder> + <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{1024} - %msg%n</pattern> + </encoder> + </appender> + <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="SANE"> + <file>${restLogDirectory}/sane.log</file> + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> + <fileNamePattern>${restLogDirectory}/sane.%d{yyyy-MM-dd}.%i.log</fileNamePattern> + <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> + <maxFileSize>${maxFileSize}</maxFileSize> + </timeBasedFileNamingAndTriggeringPolicy> + <maxHistory>${maxHistory}</maxHistory> + <totalSizeCap>${totalSizeCap}</totalSizeCap> + </rollingPolicy> + <encoder> + <pattern>${pattern}</pattern> + </encoder> + </appender> + <appender class="ch.qos.logback.classic.AsyncAppender" name="asyncSANE"> + <queueSize>${queueSize}</queueSize> + <includeCallerData>true</includeCallerData> + <appender-ref ref="SANE" /> + </appender> + <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="METRIC"> + <filter class="ch.qos.logback.classic.filter.LevelFilter"> + <level>INFO</level> + <onMatch>ACCEPT</onMatch> + <onMismatch>DENY</onMismatch> + </filter> + <file>${restLogDirectory}/${metricsLogName}.log</file> + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> + <fileNamePattern>${restLogDirectory}/${metricsLogName}.%d{yyyy-MM-dd}.%i.log</fileNamePattern> + <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> + <maxFileSize>${maxFileSize}</maxFileSize> + </timeBasedFileNamingAndTriggeringPolicy> + <maxHistory>${maxHistory}</maxHistory> + <totalSizeCap>${totalSizeCap}</totalSizeCap> + </rollingPolicy> + <encoder class="org.openecomp.aai.logging.EcompEncoder"> + <pattern>${pattern}</pattern> + </encoder> + </appender> + <appender class="ch.qos.logback.classic.AsyncAppender" name="asyncMETRIC"> + <queueSize>${queueSize}</queueSize> + <includeCallerData>true</includeCallerData> + <appender-ref ref="METRIC" /> + </appender> + <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="DEBUG"> + <filter class="ch.qos.logback.classic.filter.LevelFilter"> + <level>DEBUG</level> + <onMatch>ACCEPT</onMatch> + <onMismatch>DENY</onMismatch> + </filter> + <file>${restLogDirectory}/${debugLogName}.log</file> + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> + <fileNamePattern>${restLogDirectory}/${debugLogName}.%d{yyyy-MM-dd}.%i.log</fileNamePattern> + <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> + <maxFileSize>${maxFileSize}</maxFileSize> + </timeBasedFileNamingAndTriggeringPolicy> + <maxHistory>${maxHistory}</maxHistory> + <totalSizeCap>${totalSizeCap}</totalSizeCap> + </rollingPolicy> + <encoder class="org.openecomp.aai.logging.EcompEncoder"> + <pattern>${pattern}</pattern> + </encoder> + </appender> + <appender class="ch.qos.logback.classic.AsyncAppender" name="asyncDEBUG"> + <queueSize>${queueSize}</queueSize> + <includeCallerData>true</includeCallerData> + <appender-ref ref="DEBUG" /> + </appender> + <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="ERROR"> + <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> + <level>WARN</level> + </filter> + <file>${restLogDirectory}/${errorLogName}.log</file> + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> + <fileNamePattern>${restLogDirectory}/${errorLogName}.%d{yyyy-MM-dd}.%i.log</fileNamePattern> + <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> + <maxFileSize>${maxFileSize}</maxFileSize> + </timeBasedFileNamingAndTriggeringPolicy> + <maxHistory>${maxHistory}</maxHistory> + <totalSizeCap>${totalSizeCap}</totalSizeCap> + </rollingPolicy> + <encoder class="org.openecomp.aai.logging.EcompEncoder"> + <pattern>${pattern}</pattern> + </encoder> + </appender> + <appender class="ch.qos.logback.classic.AsyncAppender" name="asyncERROR"> + <queueSize>${queueSize}</queueSize> + <includeCallerData>true</includeCallerData> + <appender-ref ref="ERROR" /> + </appender> + <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="AUDIT"> + <file>${restLogDirectory}/${auditLogName}.log</file> + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> + <fileNamePattern>${restLogDirectory}/${auditLogName}.%d{yyyy-MM-dd}.%i.log</fileNamePattern> + <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> + <maxFileSize>${maxFileSize}</maxFileSize> + </timeBasedFileNamingAndTriggeringPolicy> + <maxHistory>${maxHistory}</maxHistory> + <totalSizeCap>${totalSizeCap}</totalSizeCap> + </rollingPolicy> + <encoder class="org.openecomp.aai.logging.EcompEncoder"> + <pattern>${pattern}</pattern> + </encoder> + </appender> + <appender class="ch.qos.logback.classic.AsyncAppender" name="asyncAUDIT"> + <queueSize>${queueSize}</queueSize> + <includeCallerData>true</includeCallerData> + <appender-ref ref="AUDIT" /> + </appender> + <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="translog"> + <filter class="ch.qos.logback.classic.filter.LevelFilter"> + <level>DEBUG</level> + <onMatch>ACCEPT</onMatch> + <onMismatch>DENY</onMismatch> + </filter> + <file>${restLogDirectory}/translog.log</file> + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> + <fileNamePattern>${restLogDirectory}/translog.%d{yyyy-MM-dd}.%i.log</fileNamePattern> + <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> + <maxFileSize>${maxFileSize}</maxFileSize> + </timeBasedFileNamingAndTriggeringPolicy> + <maxHistory>${maxHistory}</maxHistory> + <totalSizeCap>${totalSizeCap}</totalSizeCap> + </rollingPolicy> + <encoder class="org.openecomp.aai.logging.EcompEncoder"> + <pattern>${pattern}</pattern> + </encoder> + </appender> + <appender class="ch.qos.logback.classic.AsyncAppender" name="asynctranslog"> + <queueSize>${queueSize}</queueSize> + <includeCallerData>true</includeCallerData> + <appender-ref ref="translog" /> + </appender> + <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="dmaapAAIEventConsumer"> + <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> + <level>WARN</level> + </filter> + <File>${dmaapLogDirectory}/${errorLogName}.log</File> + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> + <fileNamePattern>${dmaapLogDirectory}/${errorLogName}.%d{yyyy-MM-dd}.%i.log</fileNamePattern> + <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> + <maxFileSize>${maxFileSize}</maxFileSize> + </timeBasedFileNamingAndTriggeringPolicy> + <maxHistory>${maxHistory}</maxHistory> + <totalSizeCap>${totalSizeCap}</totalSizeCap> + </rollingPolicy> + <encoder class="org.openecomp.aai.logging.EcompEncoder"> + <pattern>${pattern}</pattern> + </encoder> + </appender> + <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="dmaapAAIEventConsumerDebug"> + <filter class="ch.qos.logback.classic.filter.LevelFilter"> + <level>DEBUG</level> + <onMatch>ACCEPT</onMatch> + <onMismatch>DENY</onMismatch> + </filter> + <File>${dmaapLogDirectory}/${debugLogName}.log</File> + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> + <fileNamePattern>${dmaapLogDirectory}/${debugLogName}.%d{yyyy-MM-dd}.%i.log</fileNamePattern> + <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> + <maxFileSize>${maxFileSize}</maxFileSize> + </timeBasedFileNamingAndTriggeringPolicy> + <maxHistory>${maxHistory}</maxHistory> + <totalSizeCap>${totalSizeCap}</totalSizeCap> + </rollingPolicy> + <encoder class="org.openecomp.aai.logging.EcompEncoder"> + <pattern>${pattern}</pattern> + </encoder> + </appender> + <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="dmaapAAIEventConsumerMetric"> + <filter class="ch.qos.logback.classic.filter.LevelFilter"> + <level>INFO</level> + <onMatch>ACCEPT</onMatch> + <onMismatch>DENY</onMismatch> + </filter> + <File>${dmaapLogDirectory}/${metricsLogName}.log</File> + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> + <fileNamePattern>${dmaapLogDirectory}/${metricsLogName}.%d{yyyy-MM-dd}.%i.log</fileNamePattern> + <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> + <maxFileSize>${maxFileSize}</maxFileSize> + </timeBasedFileNamingAndTriggeringPolicy> + <maxHistory>${maxHistory}</maxHistory> + <totalSizeCap>${totalSizeCap}</totalSizeCap> + </rollingPolicy> + <encoder class="org.openecomp.aai.logging.EcompEncoder"> + <pattern>${pattern}</pattern> + </encoder> + </appender> + <!-- Spring related loggers --> + <logger level="WARN" name="org.springframework" /> + <logger level="WARN" name="org.springframework.beans" /> + <logger level="WARN" name="org.springframework.web" /> + <logger level="WARN" name="com.blog.spring.jms" /> + <!-- AJSC Services (bootstrap services) --> + <logger level="WARN" name="ajsc" /> + <logger level="WARN" name="ajsc.RouteMgmtService" /> + <logger level="WARN" name="ajsc.ComputeService" /> + <logger level="WARN" name="ajsc.VandelayService" /> + <logger level="WARN" name="ajsc.FilePersistenceService" /> + <logger level="WARN" name="ajsc.UserDefinedJarService" /> + <logger level="WARN" name="ajsc.UserDefinedBeansDefService" /> + <logger level="WARN" name="ajsc.LoggingConfigurationService" /> + <!-- AJSC related loggers (DME2 Registration, csi logging, restlet, servlet + logging) --> + <logger level="WARN" name="ajsc.utils" /> + <logger level="WARN" name="ajsc.utils.DME2Helper" /> + <logger level="WARN" name="ajsc.filters" /> + <logger level="WARN" name="ajsc.beans.interceptors" /> + <logger level="WARN" name="ajsc.restlet" /> + <logger level="WARN" name="ajsc.servlet" /> + <logger level="WARN" name="com.att.ajsc" /> + <logger level="WARN" name="com.att.ajsc.csi.logging" /> + <logger level="WARN" name="com.att.ajsc.filemonitor" /> + <!-- Other Loggers that may help troubleshoot --> + <logger level="WARN" name="net.sf" /> + <logger level="WARN" name="org.apache.commons.httpclient" /> + <logger level="WARN" name="org.apache.commons" /> + <logger level="WARN" name="org.apache.coyote" /> + <logger level="WARN" name="org.apache.jasper" /> + <!-- Camel Related Loggers (including restlet/servlet/jaxrs/cxf logging. + May aid in troubleshooting) --> + <logger level="WARN" name="org.apache.camel" /> + <logger level="WARN" name="org.apache.cxf" /> + <logger level="WARN" name="org.apache.camel.processor.interceptor" /> + <logger level="WARN" name="org.apache.cxf.jaxrs.interceptor" /> + <logger level="WARN" name="org.apache.cxf.service" /> + <logger level="WARN" name="org.restlet" /> + <logger level="WARN" name="org.apache.camel.component.restlet" /> + <!-- logback internals logging --> + <logger level="WARN" name="ch.qos.logback.classic" /> + <logger level="WARN" name="ch.qos.logback.core" /> + <!-- logback jms appenders & loggers definition starts here --> + <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="auditLogs"> + <filter class="ch.qos.logback.classic.filter.ThresholdFilter" /> + <file>${perfLogsDirectory}/Audit-${lrmRVer}-${lrmRO}-${Pid}.log</file> + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> + <fileNamePattern>${perfLogsDirectory}/Audit-${lrmRVer}-${lrmRO}-${Pid}.%d{yyyy-MM-dd}.%i.log</fileNamePattern> + <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> + <maxFileSize>${maxFileSize}</maxFileSize> + </timeBasedFileNamingAndTriggeringPolicy> + <maxHistory>${maxHistory}</maxHistory> + <totalSizeCap>${totalSizeCap}</totalSizeCap> + </rollingPolicy> + <encoder> + <pattern>${pattern}</pattern> + </encoder> + </appender> + <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="perfLogs"> + <filter class="ch.qos.logback.classic.filter.ThresholdFilter" /> + <file>${perfLogsDirectory}/Perform-${lrmRVer}-${lrmRO}-${Pid}.log</file> + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> + <fileNamePattern>${perfLogsDirectory}/Perform-${lrmRVer}-${lrmRO}-${Pid}.%d{yyyy-MM-dd}.%i.log</fileNamePattern> + <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> + <maxFileSize>${maxFileSize}</maxFileSize> + </timeBasedFileNamingAndTriggeringPolicy> + <maxHistory>${maxHistory}</maxHistory> + <totalSizeCap>${totalSizeCap}</totalSizeCap> + </rollingPolicy> + <encoder> + <pattern>${pattern}</pattern> + </encoder> + </appender> + <appender class="ch.qos.logback.classic.AsyncAppender" name="ASYNC-audit"> + <queueSize>${queueSize}</queueSize> + <includeCallerData>true</includeCallerData> + <discardingThreshold>0</discardingThreshold> + <appender-ref ref="Audit-Record-Queue" /> + </appender> + <appender class="ch.qos.logback.classic.AsyncAppender" name="ASYNC-perf"> + <queueSize>${queueSize}</queueSize> + <includeCallerData>true</includeCallerData> + <discardingThreshold>0</discardingThreshold> + <appender-ref ref="Performance-Tracker-Queue" /> + </appender> + <logger additivity="false" level="INFO" name="AuditRecord"> + <appender-ref ref="ASYNC-audit" /> + <appender-ref ref="auditLogs" /> + </logger> + <logger additivity="false" level="INFO" name="AuditRecord_DirectCall"> + <appender-ref ref="ASYNC-audit" /> + <appender-ref ref="auditLogs" /> + </logger> + <logger additivity="false" level="INFO" name="PerfTrackerRecord"> + <appender-ref ref="ASYNC-perf" /> + <appender-ref ref="perfLogs" /> + </logger> + <!-- logback jms appenders & loggers definition ends here --> + <logger additivity="false" level="DEBUG" name="org.openecomp.aai.interceptors"> + <appender-ref ref="asynctranslog" /> + </logger> + <logger level="DEBUG" name="org.openecomp.aai.interceptors.PreAaiAjscInterceptor"> + <appender-ref ref="asyncAUDIT" /> + </logger> + <logger level="DEBUG" name="org.openecomp.aai.interceptors.PostAaiAjscInterceptor"> + <appender-ref ref="asyncAUDIT" /> + </logger> + <logger additivity="false" level="DEBUG" name="org.openecomp.aai.dmaap"> + <appender-ref ref="dmaapAAIEventConsumer" /> + <appender-ref ref="dmaapAAIEventConsumerDebug" /> + <appender-ref ref="dmaapAAIEventConsumerMetric" /> + </logger> + <logger level="WARN" name="org.apache" /> + <logger level="WARN" name="org.zookeeper" /> + <logger level="WARN" name="com.thinkaurelius" /> + <!-- ============================================================================ --> + <!-- General EELF logger --> + <!-- ============================================================================ --> + <logger additivity="false" level="WARN" name="com.att.eelf"> + <appender-ref ref="asyncDEBUG" /> + <appender-ref ref="asyncERROR" /> + <appender-ref ref="asyncMETRIC" /> + <appender-ref ref="asyncAUDIT" /> + </logger> + <root level="INFO"> + <appender-ref ref="asyncDEBUG" /> + <appender-ref ref="asyncERROR" /> + </root> +</configuration> diff --git a/onap/aai/model-loader/conf/logback.xml b/onap/aai/model-loader/conf/logback.xml index 3443688..d512d3b 100644 --- a/onap/aai/model-loader/conf/logback.xml +++ b/onap/aai/model-loader/conf/logback.xml @@ -2,12 +2,10 @@ <!--<jmxConfigurator /> --> <!-- directory path for all other type logs --> <property name="logDir" value="/var/log/onap" /> - <!-- specify the component name <ECOMP-component-name>::= "MSO" | "DCAE" - | "ASDC " | "AAI" |"Policy" | "SDNC" | "AC" --> <property name="componentName" value="aai"></property> <property name="subComponentName" value="aai-ml"></property> <property name="logDirectory" value="${logDir}/${componentName}/${subComponentName}" /> - <!-- default eelf log file names --> + <!-- default eelf log file names --> <property name="generalLogName" value="error" /> <property name="metricsLogName" value="metrics" /> <property name="auditLogName" value="audit" /> @@ -16,7 +14,7 @@ <property name="maxFileSize" value="50MB" /> <property name="maxHistory" value="30" /> <property name="totalSizeCap" value="10GB" /> - <property name="pattern" value="%d{"yyyy-MM-dd'T'HH:mm:ss.SSSXXX", UTC}\t[%thread]\t%-5level\t%logger{36}\t%replace(%replace(%replace(%mdc){'\t','\\\\t'}){', ','\t'}){'\n', '\\\\n'}\t%replace(%replace(%msg){'\n', '\\\\n'}){'\t','\\\\t'}%n" /> + <property name="pattern" value="%d{"yyyy-MM-dd'T'HH:mm:ss.SSSXXX", UTC}\t[%thread]\t%-5level\t%logger\t%replace(%replace(%replace(%mdc){'\t','\\\\t'}){', ','\t'}){'\n', '\\\\n'}\t%replace(%replace(%msg){'\n', '\\\\n'}){'\t','\\\\t'}%n" /> <!-- Example evaluator filter applied against console appender --> <appender class="ch.qos.logback.core.ConsoleAppender" name="STDOUT"> <encoder> @@ -47,7 +45,7 @@ <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>INFO</level> </filter> - <queueSize>256</queueSize> + <queueSize>${queueSize}</queueSize> <appender-ref ref="EELF" /> </appender> <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="EELFAudit"> @@ -65,7 +63,7 @@ </encoder> </appender> <appender class="ch.qos.logback.classic.AsyncAppender" name="asyncEELFAudit"> - <queueSize>256</queueSize> + <queueSize>${queueSize}</queueSize> <appender-ref ref="EELFAudit" /> </appender> <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="EELFMetrics"> @@ -83,7 +81,7 @@ </encoder> </appender> <appender class="ch.qos.logback.classic.AsyncAppender" name="asyncEELFMetrics"> - <queueSize>256</queueSize> + <queueSize>${queueSize}</queueSize> <appender-ref ref="EELFMetrics" /> </appender> <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="EELFDebug"> @@ -101,7 +99,7 @@ </encoder> </appender> <appender class="ch.qos.logback.classic.AsyncAppender" name="asyncEELFDebug"> - <queueSize>256</queueSize> + <queueSize>${queueSize}</queueSize> <appender-ref ref="EELFDebug" /> <includeCallerData>true</includeCallerData> </appender> @@ -161,4 +159,3 @@ <!-- <appender-ref ref="asyncEELFDebug" /> --> </root> </configuration> - |