summaryrefslogtreecommitdiffstats
path: root/ecomp-sdk/epsdk-logger/src/main/java/org/onap/portalsdk/core/logging/logic/LoggerProperties.java
blob: f2591563cf081d0582e81a93528eb6fd7e79f190 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
/*
 * ============LICENSE_START==========================================
 * ONAP Portal SDK
 * ===================================================================
 * Copyright � 2017 AT&T Intellectual Property. All rights reserved.
 * ===================================================================
 *
 * Unless otherwise specified, all software contained herein is licensed
 * under the Apache License, Version 2.0 (the "License");
 * you may not use this software 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.
 *
 * Unless otherwise specified, all documentation contained herein is licensed
 * under the Creative Commons License, Attribution 4.0 Intl. (the "License");
 * you may not use this documentation except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *             https://creativecommons.org/licenses/by/4.0/
 *
 * Unless required by applicable law or agreed to in writing, documentation
 * 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============================================
 *
 * 
 */
package org.onap.portalsdk.core.logging.logic;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

public class LoggerProperties {

		
	public static final String MDC_APPNAME = "AppName";
	public static final String MDC_REST_PATH = "RestPath";
	public static final String MDC_REST_METHOD = "RestMethod";
	public static final String INSTANCE_UUID = "instance_uuid";
	public static final String MDC_CLASS_NAME = "ClassName";
	public static final String MDC_LOGIN_ID = "LoginId";
	public static final String MDC_TIMER = "Timer";
	public static final String SDK_NAME = "ECOMP_SDK";
	public static final String ECOMP_REQUEST_ID = "X-ECOMP-RequestID";
	public static final String PARTNER_NAME = "PartnerName";
	public static final String FULL_URL = "Full-URL";
	public static final String AUDITLOG_BEGIN_TIMESTAMP = "AuditLogBeginTimestamp";
	public static final String AUDITLOG_END_TIMESTAMP = "AuditLogEndTimestamp";
	public static final String METRICSLOG_BEGIN_TIMESTAMP = "MetricsLogBeginTimestamp";
	public static final String METRICSLOG_END_TIMESTAMP = "MetricsLogEndTimestamp";
	public static final String CLIENT_IP_ADDRESS = "ClientIPAddress";
	public static final String STATUS_CODE = "StatusCode";
	public static final String RESPONSE_CODE = "ResponseCode";
	
	public static final String HTTP = "HTTP";
	public static final String HTTPS = "HTTPS";
	public static final String UNKNOWN = "Unknown";
	public static final String PROTOCOL = "PROTOCOL";
	public static final String USERAGENT_NAME = "user-agent";
	public static final String USER_ATTRIBUTE_NAME = "user_attribute_name";
	

	private LoggerProperties(){}

	private static Properties properties;
	
	private static String propertyFileName = "logger.properties";

	private static final Object lockObject = new Object();
	
//	private static final EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(LoggerProperties.class);

	/**
	 * Gets the property value for the specified key. If a value is found, leading
	 * and trailing space is trimmed.
	 *
	 * @param property
	 *            Property key
	 * @return Value for the named property; null if the property file was not
	 *         loaded or the key was not found.
	 */
	public static String getProperty(String property) {
		if (properties == null) {
			synchronized (lockObject) {
				try {
					if (!initialize()) {
//						logger.error(EELFLoggerDelegate.errorLogger, "Failed to read property file " + propertyFileName);
						return null;
					}
				} catch (IOException e) {
//					logger.error(EELFLoggerDelegate.errorLogger, "Failed to read property file " + propertyFileName ,e);
					return null;
				}
			}
		}
		String value = properties.getProperty(property);
		if (value != null)
			value = value.trim();
		return value;
	}

	/**
	 * Reads properties from a portal.properties file on the classpath.
	 * 
	 * Clients do NOT need to call this method. Clients MAY call this method to test
	 * whether the properties file can be loaded successfully.
	 * 
	 * @return True if properties were successfully loaded, else false.
	 * @throws IOException
	 *             On failure
	 */
	private static boolean initialize() throws IOException {
		if (properties != null)
			return true;
		InputStream in = LoggerProperties.class.getClassLoader().getResourceAsStream(propertyFileName);
		if (in == null)
			return false;
		properties = new Properties();
		try {
			properties.load(in);
		} finally {
			in.close();
		}
		return true;
	}
}