diff --git a/bootstraps/bootstrap-java9/src/main/java/com/navercorp/pinpoint/bootstrap/java9/module/ModuleLogLevel.java b/bootstraps/bootstrap-java9/src/main/java/com/navercorp/pinpoint/bootstrap/java9/module/ModuleLogLevel.java new file mode 100644 index 000000000000..269522f75d2b --- /dev/null +++ b/bootstraps/bootstrap-java9/src/main/java/com/navercorp/pinpoint/bootstrap/java9/module/ModuleLogLevel.java @@ -0,0 +1,87 @@ +/* + * Copyright 2023 NAVER Corp. + * + * 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. + * + */ + +package com.navercorp.pinpoint.bootstrap.java9.module; + +/** + * @author yjqg6666 + */ +enum ModuleLogLevel { + + ERROR(40), + WARN(30), + INFO(20), + DEBUG(10), + TRACE(0); + + private final int value; + + ModuleLogLevel(int value) { + this.value = value; + } + + public static ModuleLogLevel of(String label) { + if (label == null) { + return null; + } + try { + return ModuleLogLevel.valueOf(label); + } catch (IllegalArgumentException e) { + return null; + } + } + + public static ModuleLogLevel of(int value) { + switch (value) { + case 40: + return ERROR; + case 30: + return WARN; + case 20: + return INFO; + case 10: + return DEBUG; + case 0: + return TRACE; + } + return null; + } + + public boolean logTrace() { + return checkLevel(TRACE); + } + + public boolean logDebug() { + return checkLevel(DEBUG); + } + + public boolean logInfo() { + return checkLevel(INFO); + } + + public boolean logWarn() { + return checkLevel(WARN); + } + + public boolean logError() { + return checkLevel(ERROR); + } + + private boolean checkLevel(ModuleLogLevel check) { + return check.value >= this.value; + } +} diff --git a/bootstraps/bootstrap-java9/src/main/java/com/navercorp/pinpoint/bootstrap/java9/module/ModuleLogger.java b/bootstraps/bootstrap-java9/src/main/java/com/navercorp/pinpoint/bootstrap/java9/module/ModuleLogger.java index 97dbacb2318b..1f2e858c7573 100644 --- a/bootstraps/bootstrap-java9/src/main/java/com/navercorp/pinpoint/bootstrap/java9/module/ModuleLogger.java +++ b/bootstraps/bootstrap-java9/src/main/java/com/navercorp/pinpoint/bootstrap/java9/module/ModuleLogger.java @@ -16,11 +16,13 @@ package com.navercorp.pinpoint.bootstrap.java9.module; + /** * @author Woonduk Kang(emeroad) */ public final class ModuleLogger { + private static final ModuleLogLevel LOG_LEVEL = getLogLevel(); private final String loggerName; private final int prefixSize; @@ -28,18 +30,29 @@ public static ModuleLogger getLogger(String loggerName) { return new ModuleLogger(loggerName); } + private static ModuleLogLevel getLogLevel() { + String logLevel = System.getProperty("pinpoint.agent.bootlogger.loglevel", ModuleLogLevel.INFO.name()); + logLevel = logLevel.toUpperCase(); + + final ModuleLogLevel level = ModuleLogLevel.of(logLevel); + + return level != null ? level : ModuleLogLevel.INFO; + } + private ModuleLogger(String loggerName) { this.loggerName = loggerName; this.prefixSize = getLength(loggerName) + 3; } public void info(String log) { - StringBuilder sb = new StringBuilder(getLength(log) + prefixSize); - sb.append('['); - sb.append(loggerName); - sb.append("] "); - sb.append(log); - System.out.println(sb.toString()); + if (LOG_LEVEL.logInfo()) { + StringBuilder sb = new StringBuilder(getLength(log) + prefixSize); + sb.append('['); + sb.append(loggerName); + sb.append("] "); + sb.append(log); + System.out.println(sb.toString()); + } } private int getLength(String log) { @@ -48,5 +61,4 @@ private int getLength(String log) { } return log.length(); } - }