<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<!-- ===================================================================== -->
<!--                                                                       -->
<!--  Log4j Configuration                                                  -->
<!--                                                                       -->
<!-- ===================================================================== -->

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false">

	<!-- ================================= -->
	<!-- Append messages to database -->
	<!-- ================================= -->

	<appender name="JDBC" class="log4jextensions.ExtendedJDBCAppender">
		<param name="DataSourceJndiName" value="java:jboss/datasources/Default" />
		<param name="BufferSize" value="1" />
		<param name="Threshold" value="ERROR" />
		<param name="ReconnectTimeout" value="1" />
		<layout class="log4jextensions.ExtendedPatternLayout">
			<param name="ConversionPattern" value="insert into ErrorLog (ExceptionTrace, Pvid, LocId, ComputerName, Logger, LogLevel, thread, source, logmessage, logTimestamp, appVersion) values ('%e', case when '%X{Pvid}' = '' then null else '%X{Pvid}' end, case when '%X{LocOfCare}' = '' then null else '%X{LocOfCare}' end, '%X{ComputerName}', '%c', '%p', '%t', 'ServiceLayer', '%m', '%d{yyyy-MM-dd}' + ' ' +  '%d{HH:mm:ss.SSS}', '%X{ServiceLayerVersion}')"/>
		</layout>
	</appender>

	<!-- ================================= -->
	<!-- Append messages in a local file -->
	<!-- ================================= -->

	<!-- log4j will expand the ${...} strings in the param values with the matching System
		 property value. In the development environment the system properties will probably
		 not be defined. This will make the log file location typically the project from
		 which a unit test is being run. When starting under JBoss the properties are set
		 by InitServlet. If you change the property name you will need to update the servlet. -->

	<!-- A time/date based rolling appender -->
	<appender name="FILE" class="org.apache.log4j.RollingFileAppender">
		<param name="File" value="${centricity.log.directory}server.log.${centricity.log.id}CentricityPractice.log"/>
		<param name="Append" value="true"/>
		<param name="MaxFileSize" value="5000KB" />
		<param name="MaxBackupIndex" value="5" />
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern" value="%d{ISO8601} %-5p (%t %X{RequestId} %X{CallerId}) [%c{1}] %m%n"/>
		</layout>
		<filter class="com.gehcit.cp.core.logging.LoggingFilter">
			<param name="filterConfiguration" value="LoggingFilter.xml" />
		</filter>
	</appender>

	<!-- ============================== -->
	<!-- Append messages to the console -->
	<!-- ============================== -->

	<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
	<param name="log4j1.compatibility" value="true" />  
		<param name="Target" value="System.out"/>
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern" value="%d{ISO8601} %-5p (%t) [%c{1}] %m%n"/>
		</layout>
		<filter class="com.gehcit.cp.core.logging.LoggingFilter">
			<param name="FilterConfiguration" value="LoggingFilter.xml" />
		</filter>
	</appender>

	<!-- ================================= -->
    <!-- Append messages to OMS -->
    <!-- ================================= -->
   
    <appender name="LOGAPPENDER" class="com.gehcit.cp.appender.RemoteLogAppender">
    <param name="log4j1.compatibility" value="true" />  
    <param name="Threshold" value="ERROR" />   
    </appender>

   <!-- ============================================ -->
   <!-- Monitor framework logger                     -->
   <!-- ============================================ -->

	<appender name="MONITORED" class="org.apache.log4j.RollingFileAppender">
		<param name="File" value="${centricity.log.directory}server.log.${centricity.log.id}Monitored.log"/>
		<param name="Append" value="true"/>
		<param name="MaxFileSize" value="5000KB" />
		<param name="MaxBackupIndex" value="5" />
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern" value="%d{ISO8601},%t,%X{requestId},%X{principal},%m%n"/>
		</layout>
	</appender>

   <!-- ======================================================= -->
   <!-- Log Analytics - Telemetry - MSMQ Error handler logger   -->
   <!-- ======================================================= -->

	<appender name="MSMQERRORHANDLER" class="org.apache.log4j.RollingFileAppender">
		<param name="File" value="${centricity.log.directory}server.log.${centricity.log.id}MsmqErrorHandler.log"/>
		<param name="Append" value="true"/>
		<param name="MaxFileSize" value="5000KB" />
		<param name="MaxBackupIndex" value="100" />
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern" value="%d{ISO8601} %-5p (%t %X{RequestId} %X{CallerId}) [%c{1}] %m%n"/>
		</layout>
	</appender>

	<!-- ================ -->
	<!-- Limit categories -->
	<!-- ================ -->

	<!--  Here for debug convenience (same priority as default) -->
	<category name="org.quartz">
		<priority value="ERROR"/>
	</category>

	<!--  Here for debug convenience (same priority as default) -->
	<category name="net.sf.ehcache">
		<priority value="ERROR"/>
	</category>

	<!--  Here for debug convenience (same priority as default) -->
	<category name="org.springframework">
		<priority value="ERROR"/>
	</category>

	<!-- uncomment to have request/response logged -->
	<!--<category name="org.apache.cxf.services">
			<priority value="INFO"/>
	</category>-->

	<!-- uncomment to have Epcs Cloud request/response logged -->
	<!--<category name="com.gehcit.cp.erx.epcs.service.impl">
			<priority value="DEBUG"/>
	</category>-->


	<!--
	The below Hibernate categories have been moved out due to logging changes within JBoss and Hibernate.
	In order to receive output from Hibernate logging, you must enable Hibernate categories using JBoss's logging facilities.
	To do so, the desired categories will need to be enabled in the following file:

		<jboss-install-directory>\server\default\conf\jboss-log4j.xml
	-->

	<!-- for right now turn debug on for all the GEHC packages -->
	<category name="com.gehcit.cp">
		<priority value="INFO"/>
	</category>

	<!-- log4j monitor framework root logger -->
	<category name="com.gehcit.cp.MONITORED" additivity="false">
		<priority value="INFO"/>
		<appender-ref ref="MONITORED"/>
	</category>

	<!-- Log Analytics - Telemetry - MSMQ Error handler logger -->
	<category name="com.gehcit.cp.core.loganalytics.service.MsmqErrorHandler" additivity="false">
		<priority value="ERROR"/>
		<appender-ref ref="MSMQERRORHANDLER"/>
	</category>

	<!-- explicitly turn warning level debugging the SearchFactory -->
	<category name="com.gehcit.cp.core.search.SearchFactory">
		<priority value="WARN"/>
	</category>

	<!-- this needs to be set at INFO to show the startup/shutdown banner in the log -->
	<category name="com.gehcit.cp.ws.InitServlet">
		<priority value="INFO"/>
	</category>

	<!-- this needs to be set at INFO to show the Hibernate properties at startup -->
	<category name="com.gehcit.cp.hibernate.JBossConfigLoader">
		<priority value="INFO"/>
	</category>

	<!-- this category is the default performance monitor parent logger -->
	<category name="PERFMON">
		<priority value="OFF" />
	</category>

	<!-- uncomment this category to get more information from the Quartz job scheduler -->
	<!-- category name="org.quartz">
		<priority value="INFO" />
	</category -->

	<!-- leave categories at debug for troubleshooting/support -->
	<category name="com.gehcit.cp.core.zip.ZipExtractor">
		<priority value="DEBUG" />
	</category>
	<category name="com.gehcit.cp.infrastructure.medispan">
		<priority value="INFO" />
	</category>
	<category additivity="true" name="com.gehcit.cp.ccd.bo.builders">
		<priority value="ERROR"/>
	</category>

	<!-- ======================= -->
	<!-- Setup the Root category -->
	<!-- ======================= -->

	<root>
		<priority value="ERROR"/>
		<appender-ref ref="CONSOLE"/>
		<appender-ref ref="FILE"/>
		<appender-ref ref="LOGAPPENDER"/>
	</root>
</log4j:configuration>
