[AAF-23] Initial code import

Change-Id: I8c0dc03058ae4fbb85c28a050bdd77e6c372d6c3
Signed-off-by: sg481n <sg481n@att.com>
diff --git a/log4j/.gitignore b/log4j/.gitignore
new file mode 100644
index 0000000..b981306
--- /dev/null
+++ b/log4j/.gitignore
@@ -0,0 +1,4 @@
+/target/
+.settings
+.project
+.classpath
diff --git a/log4j/pom.xml b/log4j/pom.xml
new file mode 100644
index 0000000..66e307c
--- /dev/null
+++ b/log4j/pom.xml
@@ -0,0 +1,143 @@
+<!--

+  ============LICENSE_START====================================================

+  * org.onap.aai

+  * ===========================================================================

+  * Copyright © 2017 AT&T Intellectual Property. All rights reserved.

+  * Copyright © 2017 Amdocs

+  * ===========================================================================

+  * Licensed under the Apache License, Version 2.0 (the "License");

+  * you may not use this file except in compliance with the License.

+  * You may obtain a copy of the License at

+  * 

+   *      http://www.apache.org/licenses/LICENSE-2.0

+  * 

+   * Unless required by applicable law or agreed to in writing, software

+  * distributed under the License is distributed on an "AS IS" BASIS,

+  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

+  * See the License for the specific language governing permissions and

+  * limitations under the License.

+  * ============LICENSE_END====================================================

+  *

+  * ECOMP is a trademark and service mark of AT&T Intellectual Property.

+  *

+-->

+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

+<parent>

+		<groupId>com.att.inno</groupId>

+		<artifactId>parent</artifactId>

+		<version>1.2.13</version>

+		<relativePath>..</relativePath>

+	</parent>

+	

+	<name>Log4J Elements</name>

+	<artifactId>log4j</artifactId>

+	<packaging>jar</packaging>

+	<modelVersion>4.0.0</modelVersion>

+	<url>https://github.com/att/AAF</url>

+	<description>INNO</description>

+	<licenses>

+		<license>

+		<name>BSD License</name>

+		<url> </url>

+		</license>

+	</licenses>

+

+	<developers>

+		<developer>

+		<name>Jonathan Gathman</name>

+		<email></email>

+	<organization>ATT</organization>

+	<organizationUrl></organizationUrl>

+		</developer>

+	</developers>

+

+	<dependencies>

+		<dependency>

+			<groupId>com.att.inno</groupId>

+			<artifactId>env</artifactId>

+			<version>${project.version}</version>

+		</dependency>

+		

+		<dependency>

+			<groupId>net.java.dev.jna</groupId>

+			<artifactId>jna-platform</artifactId>

+			<version>4.0.0</version>

+		</dependency>

+	

+	</dependencies>

+	

+	<distributionManagement>

+    		<snapshotRepository>

+      			<id>ossrhdme</id>

+      			<url>https://oss.sonatype.org/content/repositories/snapshots</url>

+    		</snapshotRepository>

+    		<repository>

+      			<id>ossrhdme</id>

+      			<url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>

+    		</repository>

+	</distributionManagement>

+	

+	<scm>

+		<connection>https://github.com/att/AAF.git</connection>

+		<developerConnection>${project.scm.connection}</developerConnection>

+		<url>http://github.com/att/AAF/tree/master</url>

+	</scm>

+

+	<build>

+		<plugins>

+			<plugin>

+				<groupId>org.apache.maven.plugins</groupId>

+				<artifactId>maven-deploy-plugin</artifactId>

+				<version>2.6</version>

+				<configuration>

+					<skip>false</skip>

+				</configuration>

+			</plugin>

+			

+			<plugin>

+			<groupId>org.apache.maven.plugins</groupId>

+			<artifactId>maven-javadoc-plugin</artifactId>

+			<configuration>

+			<failOnError>false</failOnError>

+			</configuration>

+			<executions>

+				<execution>

+					<id>attach-javadocs</id>

+					<goals>

+						<goal>jar</goal>

+					</goals>

+				</execution>

+			</executions>

+		</plugin> 

+	   

+	   

+	       <plugin>

+		      <groupId>org.apache.maven.plugins</groupId>

+		      <artifactId>maven-source-plugin</artifactId>

+		      <version>2.2.1</version>

+		      <executions>

+			<execution>

+			  <id>attach-sources</id>

+			  <goals>

+			    <goal>jar-no-fork</goal>

+			  </goals>

+			</execution>

+		      </executions>

+		    </plugin>

+

+			<plugin>

+				<groupId>org.sonatype.plugins</groupId>

+				<artifactId>nexus-staging-maven-plugin</artifactId>

+				<version>1.6.7</version>

+				<extensions>true</extensions>

+				<configuration>

+				<serverId>ossrhdme</serverId>

+				<nexusUrl>https://oss.sonatype.org/</nexusUrl>

+				<autoReleaseAfterClose>true</autoReleaseAfterClose>

+				</configuration>

+			</plugin>

+		</plugins>

+	</build>

+	

+</project>

diff --git a/log4j/src/main/java/com/att/inno/env/log4j/LogFileNamer.java b/log4j/src/main/java/com/att/inno/env/log4j/LogFileNamer.java
new file mode 100644
index 0000000..3ef0f52
--- /dev/null
+++ b/log4j/src/main/java/com/att/inno/env/log4j/LogFileNamer.java
@@ -0,0 +1,83 @@
+/*******************************************************************************

+ * ============LICENSE_START====================================================

+ * * org.onap.aai

+ * * ===========================================================================

+ * * Copyright © 2017 AT&T Intellectual Property. All rights reserved.

+ * * Copyright © 2017 Amdocs

+ * * ===========================================================================

+ * * Licensed under the Apache License, Version 2.0 (the "License");

+ * * you may not use this file except in compliance with the License.

+ * * You may obtain a copy of the License at

+ * * 

+ *  *      http://www.apache.org/licenses/LICENSE-2.0

+ * * 

+ *  * Unless required by applicable law or agreed to in writing, software

+ * * distributed under the License is distributed on an "AS IS" BASIS,

+ * * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

+ * * See the License for the specific language governing permissions and

+ * * limitations under the License.

+ * * ============LICENSE_END====================================================

+ * *

+ * * ECOMP is a trademark and service mark of AT&T Intellectual Property.

+ * *

+ ******************************************************************************/

+package com.att.inno.env.log4j;

+

+import java.io.File;

+import java.net.URL;

+

+public class LogFileNamer {

+	public static final int pid = PIDAccess.INSTANCE.getpid();

+	public final String root;

+	private boolean printPID;

+	

+	public LogFileNamer(String root) {

+		if(root==null || "".equals(root) || root.endsWith("/")) {

+			this.root = root;

+		} else {

+			this.root = root + "-";

+		}

+		printPID=true;

+	}

+	

+	public LogFileNamer noPID() {

+		printPID = false;

+		return this;

+	}

+	/**

+	 * Accepts a String.

+	 * If Separated by "|" then first part is the Appender name, and the second is used in the FileNaming

+	 * (This is to allow for shortened Logger names, and more verbose file names)

+	 * 

+	 * @param appender

+	 * 

+	 * returns the String Appender

+	 */

+	public String setAppender(String appender) {

+		int pipe = appender.indexOf('|');

+		if(pipe>=0) {

+			String rv;

+			System.setProperty(

+				"LOG4J_FILENAME_"+(rv=appender.substring(0,pipe)),

+				root + appender.substring(pipe+1) + (printPID?('-' + pid):"") + ".log");

+			return rv;

+		} else {

+			System.setProperty(

+				"LOG4J_FILENAME_"+appender,

+				root + appender + (printPID?('-' + pid):"") + ".log");

+			return appender;

+		}

+		

+	}

+

+	public void configure(String props) {

+		String fname;

+		if(new File(fname="etc/"+props).exists()) {

+			org.apache.log4j.PropertyConfigurator.configureAndWatch(fname,60*1000);

+		} else {

+			URL rsrc = ClassLoader.getSystemResource(props);

+			if(rsrc==null) System.err.println("Neither File: " + fname + " or resource on Classpath " + props + " exist" );

+			org.apache.log4j.PropertyConfigurator.configure(rsrc);

+		}

+	}

+}

diff --git a/log4j/src/main/java/com/att/inno/env/log4j/PIDAccess.java b/log4j/src/main/java/com/att/inno/env/log4j/PIDAccess.java
new file mode 100644
index 0000000..77b77a6
--- /dev/null
+++ b/log4j/src/main/java/com/att/inno/env/log4j/PIDAccess.java
@@ -0,0 +1,32 @@
+/*******************************************************************************

+ * ============LICENSE_START====================================================

+ * * org.onap.aai

+ * * ===========================================================================

+ * * Copyright © 2017 AT&T Intellectual Property. All rights reserved.

+ * * Copyright © 2017 Amdocs

+ * * ===========================================================================

+ * * Licensed under the Apache License, Version 2.0 (the "License");

+ * * you may not use this file except in compliance with the License.

+ * * You may obtain a copy of the License at

+ * * 

+ *  *      http://www.apache.org/licenses/LICENSE-2.0

+ * * 

+ *  * Unless required by applicable law or agreed to in writing, software

+ * * distributed under the License is distributed on an "AS IS" BASIS,

+ * * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

+ * * See the License for the specific language governing permissions and

+ * * limitations under the License.

+ * * ============LICENSE_END====================================================

+ * *

+ * * ECOMP is a trademark and service mark of AT&T Intellectual Property.

+ * *

+ ******************************************************************************/

+package com.att.inno.env.log4j;

+

+import com.sun.jna.Library;

+import com.sun.jna.Native;

+

+public interface PIDAccess extends Library {

+	PIDAccess INSTANCE = (PIDAccess) Native.loadLibrary("c", PIDAccess.class);

+    int getpid ();

+}

diff --git a/log4j/src/test/java/com/att/inno/env/log4j/LogTest.java b/log4j/src/test/java/com/att/inno/env/log4j/LogTest.java
new file mode 100644
index 0000000..69ff8c4
--- /dev/null
+++ b/log4j/src/test/java/com/att/inno/env/log4j/LogTest.java
@@ -0,0 +1,45 @@
+/*******************************************************************************

+ * ============LICENSE_START====================================================

+ * * org.onap.aai

+ * * ===========================================================================

+ * * Copyright © 2017 AT&T Intellectual Property. All rights reserved.

+ * * Copyright © 2017 Amdocs

+ * * ===========================================================================

+ * * Licensed under the Apache License, Version 2.0 (the "License");

+ * * you may not use this file except in compliance with the License.

+ * * You may obtain a copy of the License at

+ * * 

+ *  *      http://www.apache.org/licenses/LICENSE-2.0

+ * * 

+ *  * Unless required by applicable law or agreed to in writing, software

+ * * distributed under the License is distributed on an "AS IS" BASIS,

+ * * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

+ * * See the License for the specific language governing permissions and

+ * * limitations under the License.

+ * * ============LICENSE_END====================================================

+ * *

+ * * ECOMP is a trademark and service mark of AT&T Intellectual Property.

+ * *

+ ******************************************************************************/

+package com.att.inno.env.log4j;

+

+import java.util.logging.Logger;

+

+

+public class LogTest

+{

+    public static void main(String[] args) throws Exception

+    {

+    	LogFileNamer lfn = new LogFileNamer("authz");

+    	lfn.setAppender("service");

+    	lfn.setAppender("init");

+    	lfn.setAppender("audit");

+    	lfn.setAppender("test");

+    	lfn.configure("src/test/resources/log4j-test.properties");

+        Logger log = Logger.getLogger( "init" );

+

+        

+

+        log.info("Hello");

+    }

+}

diff --git a/log4j/src/test/resources/log4j-test.properties b/log4j/src/test/resources/log4j-test.properties
new file mode 100644
index 0000000..b56e904
--- /dev/null
+++ b/log4j/src/test/resources/log4j-test.properties
@@ -0,0 +1,62 @@
+#-------------------------------------------------------------------------------

+# ============LICENSE_START====================================================

+# * org.onap.aai

+# * ===========================================================================

+# * Copyright © 2017 AT&T Intellectual Property. All rights reserved.

+# * Copyright © 2017 Amdocs

+# * ===========================================================================

+# * Licensed under the Apache License, Version 2.0 (the "License");

+# * you may not use this file except in compliance with the License.

+# * You may obtain a copy of the License at

+# * 

+#  *      http://www.apache.org/licenses/LICENSE-2.0

+# * 

+#  * Unless required by applicable law or agreed to in writing, software

+# * distributed under the License is distributed on an "AS IS" BASIS,

+# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

+# * See the License for the specific language governing permissions and

+# * limitations under the License.

+# * ============LICENSE_END====================================================

+# *

+# * ECOMP is a trademark and service mark of AT&T Intellectual Property.

+# *

+#-------------------------------------------------------------------------------

+###############################################################################

+# Copyright (c) 2016 AT&T Intellectual Property. All rights reserved.

+###############################################################################

+#

+# Licensed to the Apache Software Foundation (ASF) under one

+# or more contributor license agreements.  See the NOTICE file

+# distributed with this work for additional information

+# regarding copyright ownership.  The ASF licenses this file

+# to you under the Apache License, Version 2.0 (the

+# "License"); you may not use this file except in compliance

+# with the License.  You may obtain a copy of the License at

+#

+#     http://www.apache.org/licenses/LICENSE-2.0

+#

+# Unless required by applicable law or agreed to in writing,

+# software distributed under the License is distributed on an

+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

+# KIND, either express or implied.  See the License for the

+# specific language governing permissions and limitations

+# under the License.

+#

+log4j.rootLogger=INFO,test

+

+log4j.appender.test=org.apache.log4j.RollingFileAppender

+#log4j.appender.test.File=logs/cdv-${PID}.log

+log4j.appender.test.File=logs/${LOG4J_FILENAME_test}

+log4j.appender.test.MaxFileSize=10000KB

+log4j.appender.test.MaxBackupIndex=7

+log4j.appender.test.layout=org.apache.log4j.PatternLayout 

+log4j.appender.test.layout.ConversionPattern=%d %p [%c] - %m %n

+

+log4j.appender.stdout=org.apache.log4j.ConsoleAppender

+log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

+log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m %n

+

+# General Apache libraries

+log4j.logger.org.apache=WARN

+

+log4j.DEBUG=true