summaryrefslogtreecommitdiffstats
path: root/log4j/src/main/java/com/att/inno/env/log4j/LogFileNamer.java
diff options
context:
space:
mode:
Diffstat (limited to 'log4j/src/main/java/com/att/inno/env/log4j/LogFileNamer.java')
-rw-r--r--log4j/src/main/java/com/att/inno/env/log4j/LogFileNamer.java83
1 files changed, 83 insertions, 0 deletions
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);
+ }
+ }
+}