diff --git a/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/utils/LogUtils.java b/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/utils/LogUtils.java index f02b06cbc02974c4c94848e02adfe4dfe1cd0412..79588046cb7a321ead7c04c80d75b0fb3fa7bf73 100644 --- a/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/utils/LogUtils.java +++ b/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/utils/LogUtils.java @@ -90,7 +90,7 @@ public class LogUtils { * @param log log string */ public void info(String log) { - logger.info(" INFO - " + log); + logger.info(() -> " INFO - " + log); OUT_HANDLER.flush(); } @@ -101,7 +101,7 @@ public class LogUtils { * @param arg arg */ public void info(String log, Object arg) { - logger.info(" INFO - " + replaceArgs(log, arg)); + logger.info(() -> " INFO - " + replaceArgs(log, arg)); OUT_HANDLER.flush(); } @@ -113,7 +113,7 @@ public class LogUtils { * @param arg2 arg */ public void info(String log, Object arg1, Object arg2) { - logger.info(" INFO - " + replaceArgs(log, arg1, arg2)); + logger.info(() -> " INFO - " + replaceArgs(log, arg1, arg2)); OUT_HANDLER.flush(); } @@ -123,7 +123,7 @@ public class LogUtils { * @param log log string */ public void warn(String log) { - logger.warning(" WARN - " + log); + logger.warning(() -> " WARN - " + log); ERR_HANDLER.flush(); } @@ -134,7 +134,7 @@ public class LogUtils { * @param arg arg */ public void warn(String log, Object arg) { - logger.warning(" WARN - " + replaceArgs(log, arg)); + logger.warning(() -> " WARN - " + replaceArgs(log, arg)); ERR_HANDLER.flush(); } @@ -146,7 +146,7 @@ public class LogUtils { * @param e throwable */ public void warn(String log, Object arg, Throwable e) { - logger.log(Level.WARNING, e, () -> " DEBUG - " + replaceArgs(log, arg)); + logger.log(Level.WARNING, e, () -> " WARN - " + replaceArgs(log, arg)); ERR_HANDLER.flush(); } @@ -158,7 +158,7 @@ public class LogUtils { * @param arg2 arg */ public void warn(String log, Object arg1, Object arg2) { - logger.warning(" WARN - " + replaceArgs(log, arg1, arg2)); + logger.warning(() -> " WARN - " + replaceArgs(log, arg1, arg2)); ERR_HANDLER.flush(); } @@ -169,7 +169,7 @@ public class LogUtils { * @param e throwable */ public void warn(String log, Throwable e) { - logger.log(Level.WARNING, e, () -> " DEBUG - " + log); + logger.log(Level.WARNING, e, () -> " WARN - " + log); ERR_HANDLER.flush(); } @@ -179,7 +179,7 @@ public class LogUtils { * @param log log string */ public void debug(String log) { - logger.config(" DEBUG - " + log); + logger.config(() -> " DEBUG - " + log); OUT_HANDLER.flush(); } @@ -191,7 +191,7 @@ public class LogUtils { * @param arg2 arg */ public void debug(String log, Object arg1, Object arg2) { - logger.config(" DEBUG - " + replaceArgs(log, arg1, arg2)); + logger.config(() -> " DEBUG - " + replaceArgs(log, arg1, arg2)); OUT_HANDLER.flush(); } @@ -213,7 +213,7 @@ public class LogUtils { * @param arg arg */ public void debug(String log, Object arg) { - logger.config(" DEBUG - " + replaceArgs(log, arg)); + logger.config(() -> " DEBUG - " + replaceArgs(log, arg)); OUT_HANDLER.flush(); } @@ -223,7 +223,7 @@ public class LogUtils { * @param log log string */ public void error(String log) { - logger.severe(" ERROR - " + log); + logger.severe(() -> " ERROR - " + log); ERR_HANDLER.flush(); } @@ -257,7 +257,7 @@ public class LogUtils { * @param arg arg */ public void error(String log, Object arg) { - logger.severe(" ERROR - " + replaceArgs(log, arg)); + logger.severe(() -> " ERROR - " + replaceArgs(log, arg)); ERR_HANDLER.flush(); } @@ -269,7 +269,7 @@ public class LogUtils { * @param arg2 arg */ public void error(String log, Object arg1, Object arg2) { - logger.severe(" ERROR - " + replaceArgs(log, arg1, arg2)); + logger.severe(() -> " ERROR - " + replaceArgs(log, arg1, arg2)); ERR_HANDLER.flush(); } @@ -282,21 +282,32 @@ public class LogUtils { * @param arg3 arg */ public void error(String log, Object arg1, Object arg2, Object arg3) { - logger.severe(" ERROR - " + replaceArgs(log, arg1, arg2, arg3)); + logger.severe(() -> " ERROR - " + replaceArgs(log, arg1, arg2, arg3)); ERR_HANDLER.flush(); } private static String replaceArgs(String line, Object... args) { + if (line == null || args == null || args.length == 0) { + return line; + } Matcher matcher = PATTERN.matcher(line); - String result = line; if (!matcher.find()) { return line; } - for (Object arg : args) { - Matcher m = PATTERN.matcher(result); - result = m.replaceFirst(String.valueOf(arg)); + matcher.reset(); + StringBuffer result = new StringBuffer(); + int index = 0; + while (matcher.find()) { + matcher.appendReplacement(result, ""); + if (index < args.length) { + result.append(args[index++]); + } else { + result.append(matcher.group()); + break; + } } - return result; + matcher.appendTail(result); + return result.toString(); } private static String getJarConfig(String configFileName) throws LogConfigException { diff --git a/hapsigntool/hap_sign_tool_lib/src/test/java/com/ohos/hapsigntool/LogUtilsTest.java b/hapsigntool/hap_sign_tool_lib/src/test/java/com/ohos/hapsigntool/LogUtilsTest.java new file mode 100644 index 0000000000000000000000000000000000000000..a28e8eb9c2498d8221e8a1dddfa1bd0deb3b08f1 --- /dev/null +++ b/hapsigntool/hap_sign_tool_lib/src/test/java/com/ohos/hapsigntool/LogUtilsTest.java @@ -0,0 +1,111 @@ +/* + * Copyright (c) 2025-2025 Huawei Device Co., Ltd. + * 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.ohos.hapsigntool; + +import com.ohos.hapsigntool.utils.LogUtils; +import org.junit.jupiter.api.Test; + +/** + * Test print logs. + * + * @since 2025/07/24 + */ +public class LogUtilsTest { + private static final LogUtils LOGGER = new LogUtils(LogUtilsTest.class); + + private static final String NORMAL_CHARACTER = "test 123ABC"; + private static final String SPECIAL_CHARACTER = "$#./\\%@,:;*+=|?<>!~`-_\"'()[]{}"; + + /** + * Test print debug logs. + */ + @Test + public void testPrintDebugLog() { + LOGGER.debug(null); + LOGGER.debug(NORMAL_CHARACTER); + LOGGER.debug(SPECIAL_CHARACTER); + LOGGER.debug("arg1: {}", null); + LOGGER.debug("arg1: {}", NORMAL_CHARACTER); + LOGGER.debug("arg1: {}", SPECIAL_CHARACTER); + LOGGER.debug("arg1: {}, arg2: {}", NORMAL_CHARACTER, null); + LOGGER.debug("arg1: {}, arg2: {}", SPECIAL_CHARACTER, null); + LOGGER.debug("arg1: {}, arg2: {}", null, NORMAL_CHARACTER); + LOGGER.debug("arg1: {}, arg2: {}", null, SPECIAL_CHARACTER); + LOGGER.debug("arg1: {}, arg2: {}", null, null); + LOGGER.debug("arg1: {}, arg2: {}", NORMAL_CHARACTER, SPECIAL_CHARACTER); + LOGGER.debug("arg1: {}, arg2: {}", SPECIAL_CHARACTER, NORMAL_CHARACTER); + } + + /** + * Test print info logs. + */ + @Test + public void testPrintInfoLog() { + LOGGER.info(null); + LOGGER.info(NORMAL_CHARACTER); + LOGGER.info(SPECIAL_CHARACTER); + LOGGER.info("arg1: {}", null); + LOGGER.info("arg1: {}", NORMAL_CHARACTER); + LOGGER.info("arg1: {}", SPECIAL_CHARACTER); + LOGGER.info("arg1: {}, arg2: {}", NORMAL_CHARACTER, null); + LOGGER.info("arg1: {}, arg2: {}", SPECIAL_CHARACTER, null); + LOGGER.info("arg1: {}, arg2: {}", null, NORMAL_CHARACTER); + LOGGER.info("arg1: {}, arg2: {}", null, SPECIAL_CHARACTER); + LOGGER.info("arg1: {}, arg2: {}", null, null); + LOGGER.info("arg1: {}, arg2: {}", NORMAL_CHARACTER, SPECIAL_CHARACTER); + LOGGER.info("arg1: {}, arg2: {}", SPECIAL_CHARACTER, NORMAL_CHARACTER); + } + + /** + * Test print warn logs. + */ + @Test + public void testPrintWarnLog() { + LOGGER.warn(null); + LOGGER.warn(NORMAL_CHARACTER); + LOGGER.warn(SPECIAL_CHARACTER); + LOGGER.warn("arg1: {}", null); + LOGGER.warn("arg1: {}", NORMAL_CHARACTER); + LOGGER.warn("arg1: {}", SPECIAL_CHARACTER); + LOGGER.warn("arg1: {}, arg2: {}", NORMAL_CHARACTER, null); + LOGGER.warn("arg1: {}, arg2: {}", SPECIAL_CHARACTER, null); + LOGGER.warn("arg1: {}, arg2: {}", null, NORMAL_CHARACTER); + LOGGER.warn("arg1: {}, arg2: {}", null, SPECIAL_CHARACTER); + LOGGER.warn("arg1: {}, arg2: {}", null, null); + LOGGER.warn("arg1: {}, arg2: {}", NORMAL_CHARACTER, SPECIAL_CHARACTER); + LOGGER.warn("arg1: {}, arg2: {}", SPECIAL_CHARACTER, NORMAL_CHARACTER); + } + + /** + * Test print error logs. + */ + @Test + public void testPrintErrorLog() { + LOGGER.error(null); + LOGGER.error(NORMAL_CHARACTER); + LOGGER.error(SPECIAL_CHARACTER); + LOGGER.error("arg1: {}", null); + LOGGER.error("arg1: {}", NORMAL_CHARACTER); + LOGGER.error("arg1: {}", SPECIAL_CHARACTER); + LOGGER.error("arg1: {}, arg2: {}", NORMAL_CHARACTER, null); + LOGGER.error("arg1: {}, arg2: {}", SPECIAL_CHARACTER, null); + LOGGER.error("arg1: {}, arg2: {}", null, NORMAL_CHARACTER); + LOGGER.error("arg1: {}, arg2: {}", null, SPECIAL_CHARACTER); + LOGGER.error("arg1: {}, arg2: {}", null, null); + LOGGER.error("arg1: {}, arg2: {}", NORMAL_CHARACTER, SPECIAL_CHARACTER); + LOGGER.error("arg1: {}, arg2: {}", SPECIAL_CHARACTER, NORMAL_CHARACTER); + } +} diff --git a/hapsigntool/hap_sign_tool_lib/src/test/resources/log.properties b/hapsigntool/hap_sign_tool_lib/src/test/resources/log.properties new file mode 100644 index 0000000000000000000000000000000000000000..c62189ec4e8304261946b97d72071ddca78f9009 --- /dev/null +++ b/hapsigntool/hap_sign_tool_lib/src/test/resources/log.properties @@ -0,0 +1 @@ +level=debug \ No newline at end of file