This is an automated email from the ASF dual-hosted git repository.

chaokunyang pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-fury.git


The following commit(s) were added to refs/heads/main by this push:
     new af97e62b feat(java): implement fury logger and remove slf4j library 
(#1485)
af97e62b is described below

commit af97e62b013a3418b4fc70c019486adbab5da2c9
Author: Shawn Yang <[email protected]>
AuthorDate: Tue Apr 9 21:34:17 2024 +0800

    feat(java): implement fury logger and remove slf4j library (#1485)
    
    This PR implemented fury logger and remove slf4j library
    
    Closes #1484
    Closes #1404
---
 .../org/apache/fury/benchmark/CollectionSuite.java |   4 +-
 .../java/org/apache/fury/benchmark/RowSuite.java   |   4 +-
 .../fury/benchmark/UserTypeSerializeSuite.java     |   6 +-
 .../org/apache/fury/benchmark/state/FuryState.java |   6 +-
 .../apache/fury/benchmark/state/HessionState.java  |   4 +-
 .../apache/fury/benchmark/state/JsonbState.java    |   6 +-
 .../org/apache/fury/benchmark/state/KryoState.java |   4 +-
 .../apache/fury/benchmark/state/ObjectType.java    |   2 +-
 java/fury-core/pom.xml                             |   1 +
 .../src/main/java/org/apache/fury/Fury.java        |   4 +-
 .../org/apache/fury/builder/AccessorHelper.java    |   4 +-
 .../org/apache/fury/codegen/CodeGenerator.java     |   7 +-
 .../java/org/apache/fury/codegen/CompileUnit.java  |   4 +-
 .../java/org/apache/fury/codegen/JaninoUtils.java  |  32 +++--
 .../java/org/apache/fury/config/FuryBuilder.java   |   4 +-
 .../org/apache/fury/io/FuryReadableChannel.java    |  16 ++-
 .../java/org/apache/fury/logging/FuryLogger.java   | 133 +++++++++++++++++++++
 .../main/java/org/apache/fury/logging/Logger.java  |  58 +++++++++
 .../org/apache/fury/logging/LoggerFactory.java     |  61 ++++++++++
 .../java/org/apache/fury/logging/NilLogger.java    |  65 ++++++++++
 .../java/org/apache/fury/logging/Slf4jLogger.java  | 124 +++++++++++++++++++
 .../apache/fury/pool/ClassLoaderFuryPooled.java    |   4 +-
 .../apache/fury/pool/FuryPooledObjectFactory.java  |   4 +-
 .../org/apache/fury/resolver/AllowListChecker.java |   4 +-
 .../org/apache/fury/resolver/ClassResolver.java    |   7 +-
 .../org/apache/fury/serializer/JavaSerializer.java |   4 +-
 .../fury/serializer/ObjectStreamSerializer.java    |   4 +-
 .../fury/serializer/ReplaceResolveSerializer.java  |   4 +-
 .../apache/fury/serializer/StructSerializer.java   |   4 +-
 .../collection/SynchronizedSerializers.java        |   4 +-
 .../collection/UnmodifiableSerializers.java        |   4 +-
 .../fury/serializer/shim/ShimDispatcher.java       |   4 +-
 .../main/java/org/apache/fury/type/ClassDef.java   |   4 +-
 .../org/apache/fury/util/ClassLoaderUtils.java     |   4 +-
 .../java/org/apache/fury/util/LoggerFactory.java   | 108 -----------------
 .../fury-core/native-image.properties              |   5 +-
 .../java/org/apache/fury/CrossLanguageTest.java    |   4 +-
 .../test/java/org/apache/fury/FuryInitPerf.java    |   4 +-
 .../org/apache/fury/builder/JITContextTest.java    |   4 +-
 .../fury/collection/MultiKeyWeakMapTest.java       |   4 +-
 .../org/apache/fury/logging/Slf4jLoggerTest.java}  |  37 +++---
 .../apache/fury/resolver/ClassResolverTest.java    |   4 +-
 .../java/org/apache/fury/util/PlatformTest.java    |  15 +--
 .../fury/format/encoder/ArrayEncoderBuilder.java   |   6 +-
 .../org/apache/fury/format/encoder/Encoders.java   |  14 +--
 .../fury/format/encoder/MapEncoderBuilder.java     |   6 +-
 .../fury/format/encoder/RowEncoderBuilder.java     |   6 +-
 .../org/apache/fury/format/CrossLanguageTest.java  |   4 +-
 .../fury/format/row/binary/BinaryArrayTest.java    |  12 +-
 .../fury/format/row/binary/BinaryRowTest.java      |  12 +-
 .../fury/benchmark/DeserializationBenchmark.java   | 120 +++++++++----------
 .../fury/benchmark/SerializationBenchmark.java     | 126 +++++++++----------
 52 files changed, 695 insertions(+), 400 deletions(-)

diff --git 
a/java/benchmark/src/main/java/org/apache/fury/benchmark/CollectionSuite.java 
b/java/benchmark/src/main/java/org/apache/fury/benchmark/CollectionSuite.java
index 597e5a83..16a469f3 100644
--- 
a/java/benchmark/src/main/java/org/apache/fury/benchmark/CollectionSuite.java
+++ 
b/java/benchmark/src/main/java/org/apache/fury/benchmark/CollectionSuite.java
@@ -22,10 +22,10 @@ package org.apache.fury.benchmark;
 import java.util.ArrayList;
 import java.util.List;
 import org.apache.fury.Fury;
+import org.apache.fury.logging.Logger;
+import org.apache.fury.logging.LoggerFactory;
 import org.openjdk.jmh.Main;
 import org.openjdk.jmh.annotations.Benchmark;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /** Test suite for collection. */
 public class CollectionSuite {
diff --git 
a/java/benchmark/src/main/java/org/apache/fury/benchmark/RowSuite.java 
b/java/benchmark/src/main/java/org/apache/fury/benchmark/RowSuite.java
index 576383b6..77da175f 100644
--- a/java/benchmark/src/main/java/org/apache/fury/benchmark/RowSuite.java
+++ b/java/benchmark/src/main/java/org/apache/fury/benchmark/RowSuite.java
@@ -36,10 +36,10 @@ import org.apache.avro.reflect.ReflectDatumReader;
 import org.apache.avro.reflect.ReflectDatumWriter;
 import org.apache.fury.format.encoder.Encoder;
 import org.apache.fury.format.encoder.Encoders;
-import org.apache.fury.util.LoggerFactory;
+import org.apache.fury.logging.Logger;
+import org.apache.fury.logging.LoggerFactory;
 import org.openjdk.jmh.Main;
 import org.openjdk.jmh.annotations.Benchmark;
-import org.slf4j.Logger;
 
 public class RowSuite {
   private static final Logger LOG = LoggerFactory.getLogger(RowSuite.class);
diff --git 
a/java/benchmark/src/main/java/org/apache/fury/benchmark/UserTypeSerializeSuite.java
 
b/java/benchmark/src/main/java/org/apache/fury/benchmark/UserTypeSerializeSuite.java
index 71f45b3d..58788ac2 100644
--- 
a/java/benchmark/src/main/java/org/apache/fury/benchmark/UserTypeSerializeSuite.java
+++ 
b/java/benchmark/src/main/java/org/apache/fury/benchmark/UserTypeSerializeSuite.java
@@ -59,7 +59,7 @@ public class UserTypeSerializeSuite {
     return state.output;
   }
 
-  // @Benchmark
+  @Benchmark
   public Object fury_serialize(FuryState.FuryUserTypeState state) {
     state.buffer.writerIndex(0);
     state.fury.writeRef(state.buffer, state.object);
@@ -117,7 +117,7 @@ public class UserTypeSerializeSuite {
     return state.bos;
   }
 
-  // @Benchmark
+  @Benchmark
   public byte[] jsonb_serialize(JsonbState.JsonbUserTypeState state, Blackhole 
bh) {
     return JsonbState.serialize(bh, state, state.object);
   }
@@ -144,7 +144,7 @@ public class UserTypeSerializeSuite {
   public static void main(String[] args) throws IOException {
     if (args.length == 0) {
       String commandLine =
-          "org.apache.fury.*UserTypeSerializeSuite.fury_serialize -f 3 -wi 3 
-i 3 -t 1 -w 2s -r 2s -rf csv";
+          "org.apache.fury.*UserTypeSerializeSuite.jsonb_serialize -f 3 -wi 3 
-i 3 -t 1 -w 2s -r 2s -rf csv";
       System.out.println(commandLine);
       args = commandLine.split(" ");
     }
diff --git 
a/java/benchmark/src/main/java/org/apache/fury/benchmark/state/FuryState.java 
b/java/benchmark/src/main/java/org/apache/fury/benchmark/state/FuryState.java
index 125e1df5..7b0605d3 100644
--- 
a/java/benchmark/src/main/java/org/apache/fury/benchmark/state/FuryState.java
+++ 
b/java/benchmark/src/main/java/org/apache/fury/benchmark/state/FuryState.java
@@ -36,10 +36,11 @@ import org.apache.fury.benchmark.data.Struct;
 import org.apache.fury.config.CompatibleMode;
 import org.apache.fury.config.FuryBuilder;
 import org.apache.fury.config.Language;
+import org.apache.fury.logging.Logger;
+import org.apache.fury.logging.LoggerFactory;
 import org.apache.fury.memory.MemoryBuffer;
 import org.apache.fury.memory.MemoryUtils;
 import org.apache.fury.resolver.MetaContext;
-import org.apache.fury.util.LoggerFactory;
 import org.apache.fury.util.Preconditions;
 import org.openjdk.jmh.annotations.BenchmarkMode;
 import org.openjdk.jmh.annotations.CompilerControl;
@@ -52,7 +53,6 @@ import org.openjdk.jmh.annotations.Scope;
 import org.openjdk.jmh.annotations.Setup;
 import org.openjdk.jmh.annotations.State;
 import org.openjdk.jmh.annotations.Warmup;
-import org.slf4j.Logger;
 
 @BenchmarkMode(Mode.Throughput)
 @Warmup(iterations = 3)
@@ -131,7 +131,7 @@ public class FuryState {
         furyBuilder.withCompatibleMode(CompatibleMode.COMPATIBLE);
       }
       fury = furyBuilder.build();
-      switch (objectType) {
+      switch (ObjectType.MEDIA_CONTENT) {
         case SAMPLE:
         case STRUCT:
         case STRUCT2:
diff --git 
a/java/benchmark/src/main/java/org/apache/fury/benchmark/state/HessionState.java
 
b/java/benchmark/src/main/java/org/apache/fury/benchmark/state/HessionState.java
index b648c763..fa9322ed 100644
--- 
a/java/benchmark/src/main/java/org/apache/fury/benchmark/state/HessionState.java
+++ 
b/java/benchmark/src/main/java/org/apache/fury/benchmark/state/HessionState.java
@@ -32,7 +32,8 @@ import org.apache.fury.benchmark.data.Data;
 import org.apache.fury.benchmark.data.MediaContent;
 import org.apache.fury.benchmark.data.Sample;
 import org.apache.fury.benchmark.data.Struct;
-import org.apache.fury.util.LoggerFactory;
+import org.apache.fury.logging.Logger;
+import org.apache.fury.logging.LoggerFactory;
 import org.apache.fury.util.Preconditions;
 import org.openjdk.jmh.annotations.BenchmarkMode;
 import org.openjdk.jmh.annotations.CompilerControl;
@@ -45,7 +46,6 @@ import org.openjdk.jmh.annotations.Scope;
 import org.openjdk.jmh.annotations.Setup;
 import org.openjdk.jmh.annotations.State;
 import org.openjdk.jmh.annotations.Warmup;
-import org.slf4j.Logger;
 
 @BenchmarkMode(Mode.Throughput)
 @Warmup(iterations = 3)
diff --git 
a/java/benchmark/src/main/java/org/apache/fury/benchmark/state/JsonbState.java 
b/java/benchmark/src/main/java/org/apache/fury/benchmark/state/JsonbState.java
index 5565aa6a..55a3db63 100644
--- 
a/java/benchmark/src/main/java/org/apache/fury/benchmark/state/JsonbState.java
+++ 
b/java/benchmark/src/main/java/org/apache/fury/benchmark/state/JsonbState.java
@@ -39,7 +39,8 @@ import org.apache.fury.benchmark.data.CustomJDKSerialization;
 import org.apache.fury.benchmark.data.MediaContent;
 import org.apache.fury.benchmark.data.Sample;
 import org.apache.fury.benchmark.data.Struct;
-import org.apache.fury.util.LoggerFactory;
+import org.apache.fury.logging.Logger;
+import org.apache.fury.logging.LoggerFactory;
 import org.apache.fury.util.Platform;
 import org.apache.fury.util.Preconditions;
 import org.openjdk.jmh.annotations.CompilerControl;
@@ -52,7 +53,6 @@ import org.openjdk.jmh.annotations.Setup;
 import org.openjdk.jmh.annotations.State;
 import org.openjdk.jmh.annotations.Warmup;
 import org.openjdk.jmh.infra.Blackhole;
-import org.slf4j.Logger;
 
 @Warmup(iterations = 3)
 @Measurement(iterations = 3)
@@ -85,7 +85,7 @@ public class JsonbState {
     @Override
     public void setup() {
       super.setup();
-      switch (objectType) {
+      switch (ObjectType.MEDIA_CONTENT) {
         case SAMPLE:
           object = new Sample().populate(references);
           break;
diff --git 
a/java/benchmark/src/main/java/org/apache/fury/benchmark/state/KryoState.java 
b/java/benchmark/src/main/java/org/apache/fury/benchmark/state/KryoState.java
index 9084cc44..a75d60d7 100644
--- 
a/java/benchmark/src/main/java/org/apache/fury/benchmark/state/KryoState.java
+++ 
b/java/benchmark/src/main/java/org/apache/fury/benchmark/state/KryoState.java
@@ -34,6 +34,8 @@ import org.apache.fury.benchmark.data.Data;
 import org.apache.fury.benchmark.data.Image;
 import org.apache.fury.benchmark.data.Media;
 import org.apache.fury.benchmark.data.MediaContent;
+import org.apache.fury.logging.Logger;
+import org.apache.fury.logging.LoggerFactory;
 import org.apache.fury.util.Preconditions;
 import org.openjdk.jmh.annotations.CompilerControl;
 import org.openjdk.jmh.annotations.Fork;
@@ -44,8 +46,6 @@ import org.openjdk.jmh.annotations.Scope;
 import org.openjdk.jmh.annotations.Setup;
 import org.openjdk.jmh.annotations.State;
 import org.openjdk.jmh.annotations.Warmup;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 @Warmup(iterations = 3)
 @Measurement(iterations = 3)
diff --git 
a/java/benchmark/src/main/java/org/apache/fury/benchmark/state/ObjectType.java 
b/java/benchmark/src/main/java/org/apache/fury/benchmark/state/ObjectType.java
index c5765e19..aca39a75 100644
--- 
a/java/benchmark/src/main/java/org/apache/fury/benchmark/state/ObjectType.java
+++ 
b/java/benchmark/src/main/java/org/apache/fury/benchmark/state/ObjectType.java
@@ -24,8 +24,8 @@ import org.apache.fury.benchmark.data.Sample;
 import org.apache.fury.benchmark.data.Struct;
 
 public enum ObjectType {
-  SAMPLE,
   MEDIA_CONTENT,
+  SAMPLE,
   STRUCT,
   STRUCT2;
 
diff --git a/java/fury-core/pom.xml b/java/fury-core/pom.xml
index 2b2a426c..8a164e74 100644
--- a/java/fury-core/pom.xml
+++ b/java/fury-core/pom.xml
@@ -56,6 +56,7 @@
     <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>slf4j-api</artifactId>
+      <optional>true</optional>
     </dependency>
     <dependency>
       <groupId>com.google.guava</groupId>
diff --git a/java/fury-core/src/main/java/org/apache/fury/Fury.java 
b/java/fury-core/src/main/java/org/apache/fury/Fury.java
index b259cd64..63421ada 100644
--- a/java/fury-core/src/main/java/org/apache/fury/Fury.java
+++ b/java/fury-core/src/main/java/org/apache/fury/Fury.java
@@ -38,6 +38,8 @@ import org.apache.fury.config.Language;
 import org.apache.fury.config.LongEncoding;
 import org.apache.fury.exception.DeserializationException;
 import org.apache.fury.io.FuryInputStream;
+import org.apache.fury.logging.Logger;
+import org.apache.fury.logging.LoggerFactory;
 import org.apache.fury.memory.MemoryBuffer;
 import org.apache.fury.memory.MemoryUtils;
 import org.apache.fury.resolver.ClassInfo;
@@ -59,11 +61,9 @@ import org.apache.fury.serializer.StringSerializer;
 import org.apache.fury.type.Generics;
 import org.apache.fury.type.Type;
 import org.apache.fury.util.ExceptionUtils;
-import org.apache.fury.util.LoggerFactory;
 import org.apache.fury.util.Platform;
 import org.apache.fury.util.Preconditions;
 import org.apache.fury.util.StringUtils;
-import org.slf4j.Logger;
 
 /**
  * Cross-Lang Data layout: 1byte mask: 1-bit null: 0->null, 1->not null 1-bit 
endianness: 0->le,
diff --git 
a/java/fury-core/src/main/java/org/apache/fury/builder/AccessorHelper.java 
b/java/fury-core/src/main/java/org/apache/fury/builder/AccessorHelper.java
index ad18c2ce..7cc2c862 100644
--- a/java/fury-core/src/main/java/org/apache/fury/builder/AccessorHelper.java
+++ b/java/fury-core/src/main/java/org/apache/fury/builder/AccessorHelper.java
@@ -31,14 +31,14 @@ import org.apache.fury.codegen.CodeGenerator;
 import org.apache.fury.codegen.CodegenContext;
 import org.apache.fury.codegen.CompileUnit;
 import org.apache.fury.codegen.JaninoUtils;
+import org.apache.fury.logging.Logger;
+import org.apache.fury.logging.LoggerFactory;
 import org.apache.fury.type.Descriptor;
 import org.apache.fury.util.ClassLoaderUtils;
-import org.apache.fury.util.LoggerFactory;
 import org.apache.fury.util.Preconditions;
 import org.apache.fury.util.ReflectionUtils;
 import org.apache.fury.util.StringUtils;
 import org.apache.fury.util.record.RecordUtils;
-import org.slf4j.Logger;
 
 /**
  * Define accessor helper methods in beanClass's classloader and same package 
to avoid reflective
diff --git 
a/java/fury-core/src/main/java/org/apache/fury/codegen/CodeGenerator.java 
b/java/fury-core/src/main/java/org/apache/fury/codegen/CodeGenerator.java
index 397ddca4..d91cb870 100644
--- a/java/fury-core/src/main/java/org/apache/fury/codegen/CodeGenerator.java
+++ b/java/fury-core/src/main/java/org/apache/fury/codegen/CodeGenerator.java
@@ -38,15 +38,15 @@ import org.apache.fury.builder.AccessorHelper;
 import org.apache.fury.builder.Generated;
 import org.apache.fury.collection.Collections;
 import org.apache.fury.collection.MultiKeyWeakMap;
+import org.apache.fury.logging.Logger;
+import org.apache.fury.logging.LoggerFactory;
 import org.apache.fury.util.ClassLoaderUtils;
 import org.apache.fury.util.ClassLoaderUtils.ByteArrayClassLoader;
 import org.apache.fury.util.DelayedRef;
 import org.apache.fury.util.GraalvmSupport;
-import org.apache.fury.util.LoggerFactory;
 import org.apache.fury.util.Preconditions;
 import org.apache.fury.util.ReflectionUtils;
 import org.apache.fury.util.StringUtils;
-import org.slf4j.Logger;
 
 /**
  * Code generator will take a list of {@link CompileUnit} and compile it into 
a list of classes.
@@ -151,9 +151,6 @@ public class CodeGenerator {
       for (Map.Entry<String, byte[]> e : classes.entrySet()) {
         String key = e.getKey();
         byte[] value = e.getValue();
-        if (LOG.isDebugEnabled()) {
-          LOG.debug("Code stats for class {} is {}", key, 
JaninoUtils.getClassStats(value));
-        }
       }
     }
     return defineClasses(classes);
diff --git 
a/java/fury-core/src/main/java/org/apache/fury/codegen/CompileUnit.java 
b/java/fury-core/src/main/java/org/apache/fury/codegen/CompileUnit.java
index 22c3c6a1..08a7d200 100644
--- a/java/fury-core/src/main/java/org/apache/fury/codegen/CompileUnit.java
+++ b/java/fury-core/src/main/java/org/apache/fury/codegen/CompileUnit.java
@@ -20,10 +20,10 @@
 package org.apache.fury.codegen;
 
 import java.util.function.Supplier;
-import org.apache.fury.util.LoggerFactory;
+import org.apache.fury.logging.Logger;
+import org.apache.fury.logging.LoggerFactory;
 import org.apache.fury.util.Preconditions;
 import org.apache.fury.util.StringUtils;
-import org.slf4j.Logger;
 
 /** A CompileUnit corresponds to java file, which have a package, main class 
and code. */
 public class CompileUnit {
diff --git 
a/java/fury-core/src/main/java/org/apache/fury/codegen/JaninoUtils.java 
b/java/fury-core/src/main/java/org/apache/fury/codegen/JaninoUtils.java
index dc02d85c..90b8cc3c 100644
--- a/java/fury-core/src/main/java/org/apache/fury/codegen/JaninoUtils.java
+++ b/java/fury-core/src/main/java/org/apache/fury/codegen/JaninoUtils.java
@@ -35,7 +35,8 @@ import java.util.Map;
 import java.util.Objects;
 import java.util.stream.Collectors;
 import org.apache.fury.collection.Tuple2;
-import org.apache.fury.util.LoggerFactory;
+import org.apache.fury.logging.Logger;
+import org.apache.fury.logging.LoggerFactory;
 import org.apache.fury.util.ReflectionUtils;
 import org.apache.fury.util.StringUtils;
 import org.codehaus.commons.compiler.util.reflect.ByteArrayClassLoader;
@@ -45,7 +46,6 @@ import org.codehaus.commons.compiler.util.resource.Resource;
 import org.codehaus.janino.ClassLoaderIClassLoader;
 import org.codehaus.janino.Compiler;
 import org.codehaus.janino.util.ClassFile;
-import org.slf4j.Logger;
 
 /** A util to compile code to bytecode and create classloader to load 
generated class. */
 public class JaninoUtils {
@@ -104,13 +104,11 @@ public class JaninoUtils {
     try {
       compiler.compile(sourceFinder.resources().toArray(new Resource[0]));
       long durationMs = (System.nanoTime() - startTime) / 1000_000;
-      if (LOG.isInfoEnabled()) {
-        String classNames =
-            Arrays.stream(compileUnits)
-                .map(unit -> unit.mainClassName)
-                .collect(Collectors.joining(", ", "[", "]"));
-        LOG.info("Compile {} take {} ms", classNames, durationMs);
-      }
+      String classNames =
+          Arrays.stream(compileUnits)
+              .map(unit -> unit.mainClassName)
+              .collect(Collectors.joining(", ", "[", "]"));
+      LOG.info("Compile {} take {} ms", classNames, durationMs);
     } catch (Exception e) {
       StringBuilder msgBuilder = new StringBuilder("Compile error: \n");
       for (int i = 0; i < compileUnits.length; i++) {
@@ -185,14 +183,14 @@ public class JaninoUtils {
                                     classFile.getThisClassName(),
                                     m.getName(),
                                     length);
-                              } else if (length > 
CodeGenerator.DEFAULT_JVM_INLINE_METHOD_LIMIT
-                                  && !"<init>".equals(m.getName())) {
-                                LOG.debug(
-                                    "Generated method too long to be JIT 
inlined:"
-                                        + " class {} method {} size {}",
-                                    classFile.getThisClassName(),
-                                    m.getName(),
-                                    length);
+                                // } else if (length > 
CodeGenerator.DEFAULT_JVM_INLINE_METHOD_LIMIT
+                                //     && !"<init>".equals(m.getName())) {
+                                //   LOG.info(
+                                //       "Generated method too long to be JIT 
inlined:"
+                                //           + " class {} method {} size {}",
+                                //       classFile.getThisClassName(),
+                                //       m.getName(),
+                                //       length);
                               }
                               return Tuple2.of(m.getName(), length);
                             } catch (IllegalAccessException e) {
diff --git 
a/java/fury-core/src/main/java/org/apache/fury/config/FuryBuilder.java 
b/java/fury-core/src/main/java/org/apache/fury/config/FuryBuilder.java
index f2084d9f..05e30d7b 100644
--- a/java/fury-core/src/main/java/org/apache/fury/config/FuryBuilder.java
+++ b/java/fury-core/src/main/java/org/apache/fury/config/FuryBuilder.java
@@ -24,6 +24,8 @@ import java.util.concurrent.TimeUnit;
 import org.apache.fury.Fury;
 import org.apache.fury.ThreadLocalFury;
 import org.apache.fury.ThreadSafeFury;
+import org.apache.fury.logging.Logger;
+import org.apache.fury.logging.LoggerFactory;
 import org.apache.fury.pool.ThreadPoolFury;
 import org.apache.fury.resolver.ClassResolver;
 import org.apache.fury.serializer.JavaSerializer;
@@ -32,9 +34,7 @@ import org.apache.fury.serializer.Serializer;
 import org.apache.fury.serializer.TimeSerializers;
 import org.apache.fury.serializer.collection.GuavaCollectionSerializers;
 import org.apache.fury.util.GraalvmSupport;
-import org.apache.fury.util.LoggerFactory;
 import org.apache.fury.util.Platform;
-import org.slf4j.Logger;
 
 /** Builder class to config and create {@link Fury}. */
 // Method naming style for this builder:
diff --git 
a/java/fury-core/src/main/java/org/apache/fury/io/FuryReadableChannel.java 
b/java/fury-core/src/main/java/org/apache/fury/io/FuryReadableChannel.java
index 2d5716da..74cd6e03 100644
--- a/java/fury-core/src/main/java/org/apache/fury/io/FuryReadableChannel.java
+++ b/java/fury-core/src/main/java/org/apache/fury/io/FuryReadableChannel.java
@@ -20,7 +20,6 @@
 package org.apache.fury.io;
 
 import java.io.IOException;
-import java.io.UnsupportedEncodingException;
 import java.nio.ByteBuffer;
 import java.nio.channels.ReadableByteChannel;
 import org.apache.fury.memory.MemoryBuffer;
@@ -43,7 +42,20 @@ public class FuryReadableChannel extends 
AbstractStreamReader implements Readabl
 
   @Override
   public int read(ByteBuffer dst) throws IOException {
-    throw new UnsupportedEncodingException();
+    MemoryBuffer buf = buffer;
+    int remaining = buf.remaining();
+    int len = dst.remaining();
+    if (remaining >= len) {
+      buf.read(dst, len);
+      return len;
+    } else {
+      try {
+        buf.read(dst, remaining);
+        return channel.read(dst) + remaining;
+      } catch (IOException e) {
+        throw new RuntimeException(e);
+      }
+    }
   }
 
   @Override
diff --git 
a/java/fury-core/src/main/java/org/apache/fury/logging/FuryLogger.java 
b/java/fury-core/src/main/java/org/apache/fury/logging/FuryLogger.java
new file mode 100644
index 00000000..78301805
--- /dev/null
+++ b/java/fury-core/src/main/java/org/apache/fury/logging/FuryLogger.java
@@ -0,0 +1,133 @@
+/*
+ * 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.
+ */
+
+package org.apache.fury.logging;
+
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+
+public class FuryLogger implements Logger {
+  private static final DateTimeFormatter dateTimeFormatter =
+      DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss");
+  private final String name;
+
+  public FuryLogger(Class<?> targetClass) {
+    this.name = targetClass.getSimpleName();
+  }
+
+  // The implementation should not forward to other method, otherwise the 
fileNumber won't be right.
+  @Override
+  public void info(String msg) {
+    log("INFO", msg, new Object[0], false);
+  }
+
+  @Override
+  public void info(String msg, Object arg) {
+    log("INFO", msg, new Object[] {arg}, false);
+  }
+
+  @Override
+  public void info(String msg, Object arg1, Object arg2) {
+    log("INFO", msg, new Object[] {arg1, arg2}, false);
+  }
+
+  @Override
+  public void info(String msg, Object... args) {
+    log("INFO", msg, args, false);
+  }
+
+  @Override
+  public void warn(String msg) {
+    log("WARN", msg, new Object[0], false);
+  }
+
+  @Override
+  public void warn(String msg, Object arg) {
+    log("WARN", msg, new Object[] {arg}, true);
+  }
+
+  @Override
+  public void warn(String msg, Object arg1, Object arg2) {
+    log("WARN", msg, new Object[] {arg1, arg2}, true);
+  }
+
+  @Override
+  public void warn(String msg, Object... args) {
+    log("WARN", msg, args, true);
+  }
+
+  @Override
+  public void warn(String msg, Throwable t) {
+    log("WARN", msg, new Object[] {t}, true);
+  }
+
+  @Override
+  public void error(String msg) {
+    log("ERROR", msg, new Object[0], false);
+  }
+
+  @Override
+  public void error(String msg, Object arg) {
+    log("ERROR", msg, new Object[] {arg}, true);
+  }
+
+  @Override
+  public void error(String msg, Object arg1, Object arg2) {
+    log("ERROR", msg, new Object[] {arg1, arg2}, true);
+  }
+
+  @Override
+  public void error(String msg, Object... args) {
+    log("ERROR", msg, args, true);
+  }
+
+  @Override
+  public void error(String msg, Throwable t) {
+    log("ERROR", msg, new Object[] {t}, true);
+  }
+
+  private void log(String level, String msg, Object[] args, boolean 
mayPrintTrace) {
+    StringBuilder builder = new 
StringBuilder(dateTimeFormatter.format(LocalDateTime.now()));
+    builder.append(" ").append(level);
+    builder.append("  ").append(name);
+    int lineNumber = Thread.currentThread().getStackTrace()[3].getLineNumber();
+    builder.append(":").append(lineNumber);
+    builder.append(" [").append(Thread.currentThread().getName()).append(']');
+    builder.append(" - ");
+    int len = msg.length();
+    int count = 0;
+    for (int i = 0; i < len; i++) {
+      char c = msg.charAt(i);
+      if (c == '{' && msg.charAt(i + 1) == '}') {
+        builder.append(args[count++]);
+        i++;
+      } else {
+        builder.append(c);
+      }
+    }
+    System.out.println(builder);
+    int length = args.length;
+    if (mayPrintTrace && length > 0) {
+      Object o = args[length - 1];
+      if (o instanceof Throwable) {
+        ((Throwable) o).printStackTrace(System.out);
+      }
+    }
+  }
+}
diff --git a/java/fury-core/src/main/java/org/apache/fury/logging/Logger.java 
b/java/fury-core/src/main/java/org/apache/fury/logging/Logger.java
new file mode 100644
index 00000000..e3c891c3
--- /dev/null
+++ b/java/fury-core/src/main/java/org/apache/fury/logging/Logger.java
@@ -0,0 +1,58 @@
+/*
+ * 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.
+ */
+
+package org.apache.fury.logging;
+
+/**
+ * Logger interface in fury. Note that this logger doesn't support configure 
logging level, please
+ * don't big string using this interface. And the format template only support 
`{}` placeholder. If
+ * more sophisticated logger are needed, please config fury to use slf4j by 
{@link
+ * LoggerFactory#useSlf4jLogging} .
+ *
+ * <p>This logger is used to reduce dependency conflict and reduce jar size.
+ */
+public interface Logger {
+  void info(String msg);
+
+  void info(String msg, Object arg);
+
+  void info(String msg, Object arg1, Object arg2);
+
+  void info(String msg, Object... args);
+
+  void warn(String msg);
+
+  void warn(String msg, Object arg);
+
+  void warn(String msg, Object... args);
+
+  void warn(String msg, Object arg1, Object arg2);
+
+  void warn(String msg, Throwable t);
+
+  void error(String msg);
+
+  void error(String msg, Object arg);
+
+  void error(String msg, Object arg1, Object arg2);
+
+  void error(String msg, Object... args);
+
+  void error(String msg, Throwable t);
+}
diff --git 
a/java/fury-core/src/main/java/org/apache/fury/logging/LoggerFactory.java 
b/java/fury-core/src/main/java/org/apache/fury/logging/LoggerFactory.java
new file mode 100644
index 00000000..9b18d297
--- /dev/null
+++ b/java/fury-core/src/main/java/org/apache/fury/logging/LoggerFactory.java
@@ -0,0 +1,61 @@
+/*
+ * 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.
+ */
+
+package org.apache.fury.logging;
+
+import org.apache.fury.util.GraalvmSupport;
+
+/**
+ * A logger factory which can be used to disable fury logging more easily than 
configure logging.
+ */
+public class LoggerFactory {
+  private static volatile boolean disableLogging;
+  private static volatile boolean useSlf4jlogger;
+
+  public static void disableLogging() {
+    disableLogging = true;
+  }
+
+  public static void enableLogging() {
+    disableLogging = false;
+  }
+
+  public static void useSlf4jLogging(boolean useSlf4jLogging) {
+    LoggerFactory.useSlf4jlogger = useSlf4jLogging;
+  }
+
+  public static Logger getLogger(Class<?> clazz) {
+    if (disableLogging) {
+      return new NilLogger();
+    } else {
+      if (GraalvmSupport.IN_GRAALVM_NATIVE_IMAGE) {
+        return new FuryLogger(clazz);
+      }
+      if (useSlf4jlogger) {
+        return createSlf4jLogger(clazz);
+      } else {
+        return new FuryLogger(clazz);
+      }
+    }
+  }
+
+  private static Logger createSlf4jLogger(Class<?> clazz) {
+    return new Slf4jLogger(clazz);
+  }
+}
diff --git 
a/java/fury-core/src/main/java/org/apache/fury/logging/NilLogger.java 
b/java/fury-core/src/main/java/org/apache/fury/logging/NilLogger.java
new file mode 100644
index 00000000..44e26a8d
--- /dev/null
+++ b/java/fury-core/src/main/java/org/apache/fury/logging/NilLogger.java
@@ -0,0 +1,65 @@
+/*
+ * 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.
+ */
+
+package org.apache.fury.logging;
+
+/** An empty logger which does nothing. */
+public class NilLogger implements Logger {
+  @Override
+  public void info(String msg) {}
+
+  @Override
+  public void info(String msg, Object arg) {}
+
+  @Override
+  public void info(String msg, Object arg1, Object arg2) {}
+
+  @Override
+  public void info(String msg, Object... args) {}
+
+  @Override
+  public void warn(String msg) {}
+
+  @Override
+  public void warn(String msg, Object arg) {}
+
+  @Override
+  public void warn(String msg, Object... args) {}
+
+  @Override
+  public void warn(String msg, Object arg1, Object arg2) {}
+
+  @Override
+  public void warn(String msg, Throwable t) {}
+
+  @Override
+  public void error(String msg) {}
+
+  @Override
+  public void error(String msg, Object arg) {}
+
+  @Override
+  public void error(String msg, Object arg1, Object arg2) {}
+
+  @Override
+  public void error(String msg, Object... args) {}
+
+  @Override
+  public void error(String msg, Throwable t) {}
+}
diff --git 
a/java/fury-core/src/main/java/org/apache/fury/logging/Slf4jLogger.java 
b/java/fury-core/src/main/java/org/apache/fury/logging/Slf4jLogger.java
new file mode 100644
index 00000000..2f621eb3
--- /dev/null
+++ b/java/fury-core/src/main/java/org/apache/fury/logging/Slf4jLogger.java
@@ -0,0 +1,124 @@
+/*
+ * 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.
+ */
+
+package org.apache.fury.logging;
+
+import org.slf4j.spi.LocationAwareLogger;
+
+/** A logger to forward logging to slf4j. */
+public class Slf4jLogger implements Logger {
+  private static final String FQCN = Slf4jLogger.class.getName();
+
+  private final org.slf4j.Logger logger;
+
+  public Slf4jLogger(Class<?> cls) {
+    this.logger = org.slf4j.LoggerFactory.getLogger(cls);
+  }
+
+  @Override
+  public void info(String msg) {
+    info(msg, (Object[]) null);
+  }
+
+  @Override
+  public void info(String msg, Object arg) {
+    info(msg, new Object[] {arg});
+  }
+
+  @Override
+  public void info(String msg, Object arg1, Object arg2) {
+    info(msg, new Object[] {arg1, arg2});
+  }
+
+  @Override
+  public void info(String msg, Object... args) {
+    if (logger instanceof LocationAwareLogger) {
+      ((LocationAwareLogger) logger).log(null, FQCN, 
LocationAwareLogger.INFO_INT, msg, args, null);
+    } else {
+      logger.info(msg, args);
+    }
+  }
+
+  @Override
+  public void warn(String msg) {
+    warn(msg, (Object[]) null);
+  }
+
+  @Override
+  public void warn(String msg, Object arg) {
+    warn(msg, new Object[] {arg});
+  }
+
+  @Override
+  public void warn(String msg, Object arg1, Object arg2) {
+    warn(msg, new Object[] {arg1, arg2});
+  }
+
+  @Override
+  public void warn(String msg, Object... args) {
+    if (logger instanceof LocationAwareLogger) {
+      ((LocationAwareLogger) logger).log(null, FQCN, 
LocationAwareLogger.WARN_INT, msg, args, null);
+    } else {
+      logger.warn(msg, args);
+    }
+  }
+
+  @Override
+  public void warn(String msg, Throwable t) {
+    if (logger instanceof LocationAwareLogger) {
+      ((LocationAwareLogger) logger).log(null, FQCN, 
LocationAwareLogger.WARN_INT, msg, null, t);
+    } else {
+      logger.warn(msg, t);
+    }
+  }
+
+  @Override
+  public void error(String msg) {
+    error(msg, (Object[]) null);
+  }
+
+  @Override
+  public void error(String msg, Object arg) {
+    error(msg, new Object[] {arg});
+  }
+
+  @Override
+  public void error(String msg, Object arg1, Object arg2) {
+    error(msg, new Object[] {arg1, arg2});
+  }
+
+  @Override
+  public void error(String msg, Object... args) {
+    if (logger instanceof LocationAwareLogger) {
+      ((LocationAwareLogger) logger)
+          .log(null, FQCN, LocationAwareLogger.ERROR_INT, msg, args, null);
+    } else {
+      logger.error(msg, args);
+    }
+  }
+
+  @Override
+  public void error(String msg, Throwable t) {
+    if (logger instanceof LocationAwareLogger) {
+      ((LocationAwareLogger) logger).log(null, FQCN, 
LocationAwareLogger.ERROR_INT, msg, null, t);
+    } else {
+      logger.error(msg, t);
+    }
+  }
+}
diff --git 
a/java/fury-core/src/main/java/org/apache/fury/pool/ClassLoaderFuryPooled.java 
b/java/fury-core/src/main/java/org/apache/fury/pool/ClassLoaderFuryPooled.java
index 66430974..7f02fe02 100644
--- 
a/java/fury-core/src/main/java/org/apache/fury/pool/ClassLoaderFuryPooled.java
+++ 
b/java/fury-core/src/main/java/org/apache/fury/pool/ClassLoaderFuryPooled.java
@@ -30,8 +30,8 @@ import java.util.concurrent.locks.ReentrantLock;
 import java.util.function.Consumer;
 import java.util.function.Function;
 import org.apache.fury.Fury;
-import org.apache.fury.util.LoggerFactory;
-import org.slf4j.Logger;
+import org.apache.fury.logging.Logger;
+import org.apache.fury.logging.LoggerFactory;
 
 /** A thread-safe object pool of {@link Fury}. */
 public class ClassLoaderFuryPooled {
diff --git 
a/java/fury-core/src/main/java/org/apache/fury/pool/FuryPooledObjectFactory.java
 
b/java/fury-core/src/main/java/org/apache/fury/pool/FuryPooledObjectFactory.java
index bf5972f6..9efc584a 100644
--- 
a/java/fury-core/src/main/java/org/apache/fury/pool/FuryPooledObjectFactory.java
+++ 
b/java/fury-core/src/main/java/org/apache/fury/pool/FuryPooledObjectFactory.java
@@ -24,9 +24,9 @@ import com.google.common.cache.CacheBuilder;
 import java.util.concurrent.TimeUnit;
 import java.util.function.Function;
 import org.apache.fury.Fury;
+import org.apache.fury.logging.Logger;
+import org.apache.fury.logging.LoggerFactory;
 import org.apache.fury.util.LoaderBinding;
-import org.apache.fury.util.LoggerFactory;
-import org.slf4j.Logger;
 
 /**
  * fury pool factory The pool is used to initialize instances of fury related 
objects for soft.
diff --git 
a/java/fury-core/src/main/java/org/apache/fury/resolver/AllowListChecker.java 
b/java/fury-core/src/main/java/org/apache/fury/resolver/AllowListChecker.java
index e81a0098..f8300eb6 100644
--- 
a/java/fury-core/src/main/java/org/apache/fury/resolver/AllowListChecker.java
+++ 
b/java/fury-core/src/main/java/org/apache/fury/resolver/AllowListChecker.java
@@ -28,10 +28,10 @@ import java.util.concurrent.locks.ReentrantReadWriteLock;
 import javax.annotation.concurrent.ThreadSafe;
 import org.apache.fury.Fury;
 import org.apache.fury.exception.InsecureException;
+import org.apache.fury.logging.Logger;
+import org.apache.fury.logging.LoggerFactory;
 import org.apache.fury.memory.MemoryBuffer;
 import org.apache.fury.serializer.Serializer;
-import org.apache.fury.util.LoggerFactory;
-import org.slf4j.Logger;
 
 /** White/black list based class checker. */
 @ThreadSafe
diff --git 
a/java/fury-core/src/main/java/org/apache/fury/resolver/ClassResolver.java 
b/java/fury-core/src/main/java/org/apache/fury/resolver/ClassResolver.java
index f3803c19..6c3a55e0 100644
--- a/java/fury-core/src/main/java/org/apache/fury/resolver/ClassResolver.java
+++ b/java/fury-core/src/main/java/org/apache/fury/resolver/ClassResolver.java
@@ -94,6 +94,8 @@ import org.apache.fury.collection.Tuple2;
 import org.apache.fury.config.CompatibleMode;
 import org.apache.fury.config.Language;
 import org.apache.fury.exception.InsecureException;
+import org.apache.fury.logging.Logger;
+import org.apache.fury.logging.LoggerFactory;
 import org.apache.fury.memory.MemoryBuffer;
 import org.apache.fury.serializer.ArraySerializers;
 import org.apache.fury.serializer.BufferSerializers;
@@ -137,13 +139,11 @@ import org.apache.fury.type.GenericType;
 import org.apache.fury.type.ScalaTypes;
 import org.apache.fury.type.TypeUtils;
 import org.apache.fury.util.GraalvmSupport;
-import org.apache.fury.util.LoggerFactory;
 import org.apache.fury.util.Platform;
 import org.apache.fury.util.Preconditions;
 import org.apache.fury.util.ReflectionUtils;
 import org.apache.fury.util.StringUtils;
 import org.apache.fury.util.function.Functions;
-import org.slf4j.Logger;
 
 /**
  * Class registry for types of serializing objects, responsible for 
reading/writing types, setting
@@ -640,7 +640,6 @@ public class ClassResolver {
       Class<?> cls = entry.getKey();
       String className = cls.getName();
       if (extRegistry.registeredClasses.containsKey(className)) {
-        LOG.debug("Skip clear serializer for registered class {}", className);
         continue;
       }
       if (className.startsWith(classNamePrefix)) {
@@ -973,7 +972,7 @@ public class ClassResolver {
         }
       }
     } else {
-      LOG.debug("Object of type {} can't be serialized by jit", cls);
+      LOG.info("Object of type {} can't be serialized by jit", cls);
       switch (fury.getCompatibleMode()) {
         case SCHEMA_CONSISTENT:
           return ObjectSerializer.class;
diff --git 
a/java/fury-core/src/main/java/org/apache/fury/serializer/JavaSerializer.java 
b/java/fury-core/src/main/java/org/apache/fury/serializer/JavaSerializer.java
index 2e5dd39a..c75ebd8c 100644
--- 
a/java/fury-core/src/main/java/org/apache/fury/serializer/JavaSerializer.java
+++ 
b/java/fury-core/src/main/java/org/apache/fury/serializer/JavaSerializer.java
@@ -32,11 +32,11 @@ import org.apache.fury.Fury;
 import org.apache.fury.io.ClassLoaderObjectInputStream;
 import org.apache.fury.io.MemoryBufferObjectInput;
 import org.apache.fury.io.MemoryBufferObjectOutput;
+import org.apache.fury.logging.Logger;
+import org.apache.fury.logging.LoggerFactory;
 import org.apache.fury.memory.MemoryBuffer;
 import org.apache.fury.resolver.ClassResolver;
-import org.apache.fury.util.LoggerFactory;
 import org.apache.fury.util.Platform;
-import org.slf4j.Logger;
 
 /**
  * Serializes objects using Java's built in serialization to be compatible 
with java serialization.
diff --git 
a/java/fury-core/src/main/java/org/apache/fury/serializer/ObjectStreamSerializer.java
 
b/java/fury-core/src/main/java/org/apache/fury/serializer/ObjectStreamSerializer.java
index 02a94264..51cf84df 100644
--- 
a/java/fury-core/src/main/java/org/apache/fury/serializer/ObjectStreamSerializer.java
+++ 
b/java/fury-core/src/main/java/org/apache/fury/serializer/ObjectStreamSerializer.java
@@ -50,18 +50,18 @@ import org.apache.fury.builder.CodecUtils;
 import org.apache.fury.builder.Generated;
 import org.apache.fury.collection.ObjectArray;
 import org.apache.fury.collection.ObjectIntMap;
+import org.apache.fury.logging.Logger;
+import org.apache.fury.logging.LoggerFactory;
 import org.apache.fury.memory.MemoryBuffer;
 import org.apache.fury.resolver.ClassInfo;
 import org.apache.fury.resolver.ClassResolver;
 import org.apache.fury.resolver.FieldResolver;
 import org.apache.fury.resolver.FieldResolver.ClassField;
-import org.apache.fury.util.LoggerFactory;
 import org.apache.fury.util.Platform;
 import org.apache.fury.util.Preconditions;
 import org.apache.fury.util.ReflectionUtils;
 import org.apache.fury.util.Utils;
 import org.apache.fury.util.unsafe._JDKAccess;
-import org.slf4j.Logger;
 
 /**
  * Implement jdk custom serialization only if following conditions are met:
diff --git 
a/java/fury-core/src/main/java/org/apache/fury/serializer/ReplaceResolveSerializer.java
 
b/java/fury-core/src/main/java/org/apache/fury/serializer/ReplaceResolveSerializer.java
index da1c59fa..4fc5b6f1 100644
--- 
a/java/fury-core/src/main/java/org/apache/fury/serializer/ReplaceResolveSerializer.java
+++ 
b/java/fury-core/src/main/java/org/apache/fury/serializer/ReplaceResolveSerializer.java
@@ -28,16 +28,16 @@ import java.util.HashMap;
 import java.util.Map;
 import java.util.function.Function;
 import org.apache.fury.Fury;
+import org.apache.fury.logging.Logger;
+import org.apache.fury.logging.LoggerFactory;
 import org.apache.fury.memory.MemoryBuffer;
 import org.apache.fury.resolver.ClassInfo;
 import org.apache.fury.resolver.ClassResolver;
 import org.apache.fury.resolver.RefResolver;
-import org.apache.fury.util.LoggerFactory;
 import org.apache.fury.util.Platform;
 import org.apache.fury.util.Preconditions;
 import org.apache.fury.util.ReflectionUtils;
 import org.apache.fury.util.unsafe._JDKAccess;
-import org.slf4j.Logger;
 
 /**
  * Serializer for class which has jdk `writeReplace`/`readResolve` method 
defined. This serializer
diff --git 
a/java/fury-core/src/main/java/org/apache/fury/serializer/StructSerializer.java 
b/java/fury-core/src/main/java/org/apache/fury/serializer/StructSerializer.java
index 7da098f2..92b74fa8 100644
--- 
a/java/fury-core/src/main/java/org/apache/fury/serializer/StructSerializer.java
+++ 
b/java/fury-core/src/main/java/org/apache/fury/serializer/StructSerializer.java
@@ -31,6 +31,8 @@ import java.util.Map;
 import org.apache.fury.Fury;
 import org.apache.fury.config.Language;
 import org.apache.fury.exception.ClassNotCompatibleException;
+import org.apache.fury.logging.Logger;
+import org.apache.fury.logging.LoggerFactory;
 import org.apache.fury.memory.MemoryBuffer;
 import org.apache.fury.type.Descriptor;
 import org.apache.fury.type.GenericType;
@@ -38,11 +40,9 @@ import org.apache.fury.type.Generics;
 import org.apache.fury.type.Type;
 import org.apache.fury.type.TypeUtils;
 import org.apache.fury.util.FieldAccessor;
-import org.apache.fury.util.LoggerFactory;
 import org.apache.fury.util.Platform;
 import org.apache.fury.util.Preconditions;
 import org.apache.fury.util.Utils;
-import org.slf4j.Logger;
 
 /**
  * A serializer used for cross-language serialization for custom objects.
diff --git 
a/java/fury-core/src/main/java/org/apache/fury/serializer/collection/SynchronizedSerializers.java
 
b/java/fury-core/src/main/java/org/apache/fury/serializer/collection/SynchronizedSerializers.java
index c4a0daf2..7778b4e3 100644
--- 
a/java/fury-core/src/main/java/org/apache/fury/serializer/collection/SynchronizedSerializers.java
+++ 
b/java/fury-core/src/main/java/org/apache/fury/serializer/collection/SynchronizedSerializers.java
@@ -36,12 +36,12 @@ import java.util.TreeSet;
 import java.util.function.Function;
 import org.apache.fury.Fury;
 import org.apache.fury.collection.Tuple2;
+import org.apache.fury.logging.Logger;
+import org.apache.fury.logging.LoggerFactory;
 import org.apache.fury.memory.MemoryBuffer;
 import org.apache.fury.serializer.Serializer;
-import org.apache.fury.util.LoggerFactory;
 import org.apache.fury.util.Platform;
 import org.apache.fury.util.Utils;
-import org.slf4j.Logger;
 
 /** Serializer for synchronized Collections and Maps created via Collections. 
*/
 @SuppressWarnings({"rawtypes", "unchecked"})
diff --git 
a/java/fury-core/src/main/java/org/apache/fury/serializer/collection/UnmodifiableSerializers.java
 
b/java/fury-core/src/main/java/org/apache/fury/serializer/collection/UnmodifiableSerializers.java
index d651421f..f6207001 100644
--- 
a/java/fury-core/src/main/java/org/apache/fury/serializer/collection/UnmodifiableSerializers.java
+++ 
b/java/fury-core/src/main/java/org/apache/fury/serializer/collection/UnmodifiableSerializers.java
@@ -35,13 +35,13 @@ import java.util.TreeSet;
 import java.util.function.Function;
 import org.apache.fury.Fury;
 import org.apache.fury.collection.Tuple2;
+import org.apache.fury.logging.Logger;
+import org.apache.fury.logging.LoggerFactory;
 import org.apache.fury.memory.MemoryBuffer;
 import org.apache.fury.serializer.Serializer;
-import org.apache.fury.util.LoggerFactory;
 import org.apache.fury.util.Platform;
 import org.apache.fury.util.Preconditions;
 import org.apache.fury.util.Utils;
-import org.slf4j.Logger;
 
 /** Serializer for unmodifiable Collections and Maps created via Collections. 
*/
 @SuppressWarnings({"rawtypes", "unchecked"})
diff --git 
a/java/fury-core/src/main/java/org/apache/fury/serializer/shim/ShimDispatcher.java
 
b/java/fury-core/src/main/java/org/apache/fury/serializer/shim/ShimDispatcher.java
index 73a5727a..a27b208e 100644
--- 
a/java/fury-core/src/main/java/org/apache/fury/serializer/shim/ShimDispatcher.java
+++ 
b/java/fury-core/src/main/java/org/apache/fury/serializer/shim/ShimDispatcher.java
@@ -22,13 +22,13 @@ package org.apache.fury.serializer.shim;
 import org.apache.fury.Fury;
 import org.apache.fury.collection.FuryObjectMap;
 import org.apache.fury.collection.ObjectMap;
+import org.apache.fury.logging.Logger;
+import org.apache.fury.logging.LoggerFactory;
 import org.apache.fury.serializer.Serializer;
 import org.apache.fury.serializer.Serializers;
 import org.apache.fury.serializer.collection.CollectionSerializer;
 import org.apache.fury.serializer.collection.MapSerializers;
 import org.apache.fury.util.Preconditions;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /** A shim serializer dispatcher to resolve compatibility problems for common 
used classes. */
 @SuppressWarnings("rawtypes")
diff --git a/java/fury-core/src/main/java/org/apache/fury/type/ClassDef.java 
b/java/fury-core/src/main/java/org/apache/fury/type/ClassDef.java
index 0e97922d..b05e45ee 100644
--- a/java/fury-core/src/main/java/org/apache/fury/type/ClassDef.java
+++ b/java/fury-core/src/main/java/org/apache/fury/type/ClassDef.java
@@ -42,16 +42,16 @@ import org.apache.fury.builder.MetaSharedCodecBuilder;
 import org.apache.fury.collection.IdentityObjectIntMap;
 import org.apache.fury.config.CompatibleMode;
 import org.apache.fury.config.FuryBuilder;
+import org.apache.fury.logging.Logger;
+import org.apache.fury.logging.LoggerFactory;
 import org.apache.fury.memory.MemoryBuffer;
 import org.apache.fury.memory.MemoryUtils;
 import org.apache.fury.resolver.ClassResolver;
 import org.apache.fury.serializer.CompatibleSerializer;
-import org.apache.fury.util.LoggerFactory;
 import org.apache.fury.util.MurmurHash3;
 import org.apache.fury.util.Platform;
 import org.apache.fury.util.Preconditions;
 import org.apache.fury.util.ReflectionUtils;
-import org.slf4j.Logger;
 
 /**
  * Serializable class definition to be sent to other process. So if sender 
peer and receiver peer
diff --git 
a/java/fury-core/src/main/java/org/apache/fury/util/ClassLoaderUtils.java 
b/java/fury-core/src/main/java/org/apache/fury/util/ClassLoaderUtils.java
index 3dcc200d..8ebb09d8 100644
--- a/java/fury-core/src/main/java/org/apache/fury/util/ClassLoaderUtils.java
+++ b/java/fury-core/src/main/java/org/apache/fury/util/ClassLoaderUtils.java
@@ -33,8 +33,9 @@ import java.util.Map;
 import java.util.Objects;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.stream.Collectors;
+import org.apache.fury.logging.Logger;
+import org.apache.fury.logging.LoggerFactory;
 import org.apache.fury.util.unsafe.DefineClass;
-import org.slf4j.Logger;
 
 /** ClassLoader utility for defining class and loading class by strategies. */
 public class ClassLoaderUtils {
@@ -256,7 +257,6 @@ public class ClassLoaderUtils {
       }
       return DefineClass.defineClass(className, neighbor, classLoader, domain, 
bytecode);
     } catch (Exception | LinkageError e) {
-      LOG.debug("Unable define class {} in classloader {}.", className, 
classLoader, e);
       return null;
     }
   }
diff --git 
a/java/fury-core/src/main/java/org/apache/fury/util/LoggerFactory.java 
b/java/fury-core/src/main/java/org/apache/fury/util/LoggerFactory.java
deleted file mode 100644
index 01f0615c..00000000
--- a/java/fury-core/src/main/java/org/apache/fury/util/LoggerFactory.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * 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.
- */
-
-package org.apache.fury.util;
-
-import java.lang.reflect.InvocationHandler;
-import java.lang.reflect.Method;
-import java.lang.reflect.Proxy;
-import java.time.LocalDateTime;
-import java.time.format.DateTimeFormatter;
-import org.slf4j.Logger;
-import org.slf4j.helpers.NOPLogger;
-
-/**
- * A logger factory which can be used to disable fury logging more easily than 
configure logging.
- */
-public class LoggerFactory {
-  private static boolean disableLogging;
-
-  public static void disableLogging() {
-    disableLogging = true;
-  }
-
-  public static void enableLogging() {
-    disableLogging = false;
-  }
-
-  public static Logger getLogger(Class<?> clazz) {
-    if (disableLogging) {
-      return NOPLogger.NOP_LOGGER;
-    } else {
-      if (GraalvmSupport.IN_GRAALVM_NATIVE_IMAGE) {
-        return (Logger)
-            Proxy.newProxyInstance(
-                clazz.getClassLoader(), new Class[] {Logger.class}, new 
GraalvmLogger(clazz));
-      }
-      return org.slf4j.LoggerFactory.getLogger(clazz);
-    }
-  }
-
-  private static final class GraalvmLogger implements InvocationHandler {
-    private static final DateTimeFormatter dateTimeFormatter =
-        DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss");
-    private final Class<?> targetClass;
-
-    private GraalvmLogger(Class<?> targetClass) {
-      this.targetClass = targetClass;
-    }
-
-    @Override
-    public Object invoke(Object proxy, Method method, Object[] args) throws 
Throwable {
-      String name = method.getName();
-      switch (name) {
-        case "isEnabledForLevel":
-        case "isInfoEnabled":
-        case "isWarnEnabled":
-        case "isErrorEnabled":
-          return true;
-        case "info":
-          log("INFO", false, args);
-          return null;
-        case "warn":
-          log("WARN", false, args);
-          return null;
-        case "error":
-          log("ERROR", false, args);
-          return null;
-        default:
-          return method.invoke(NOPLogger.NOP_LOGGER, args);
-      }
-    }
-
-    private void log(String level, boolean mayPrintTrace, Object[] args) {
-      StringBuilder builder = new 
StringBuilder(dateTimeFormatter.format(LocalDateTime.now()));
-      builder.append(" ").append(level);
-      builder.append(" ").append(targetClass.getSimpleName());
-      builder.append(" 
[").append(Thread.currentThread().getName()).append(']');
-      builder.append(" -");
-      for (Object arg : args) {
-        builder.append(" ").append(arg);
-      }
-      System.out.println(builder);
-      int length = args.length;
-      if (mayPrintTrace && length > 0) {
-        Object o = args[length - 1];
-        if (o instanceof Throwable) {
-          ((Throwable) o).printStackTrace();
-        }
-      }
-    }
-  }
-}
diff --git 
a/java/fury-core/src/main/resources/META-INF/native-image/org.apache.fury/fury-core/native-image.properties
 
b/java/fury-core/src/main/resources/META-INF/native-image/org.apache.fury/fury-core/native-image.properties
index 74f1304e..bcb3392d 100644
--- 
a/java/fury-core/src/main/resources/META-INF/native-image/org.apache.fury/fury-core/native-image.properties
+++ 
b/java/fury-core/src/main/resources/META-INF/native-image/org.apache.fury/fury-core/native-image.properties
@@ -106,7 +106,8 @@ 
Args=--initialize-at-build-time=org.apache.fury.memory.MemoryBuffer,\
     org.apache.fury.shaded.org.codehaus.janino.Java$Invocation,\
     org.apache.fury.shaded.org.codehaus.janino.ReflectionIClass,\
     org.apache.fury.util.record.RecordUtils,\
-    org.apache.fury.util.LoggerFactory$GraalvmLogger,\
+    org.apache.fury.logging.FuryLogger,\
+    org.apache.fury.logging.LoggerFactory,\
     org.apache.fury.shaded.org.codehaus.janino.Java$Literal,\
     org.apache.fury.shaded.org.codehaus.janino.IClassLoader,\
     org.apache.fury.shaded.org.codehaus.janino.Java$PrimitiveType,\
@@ -147,7 +148,6 @@ 
Args=--initialize-at-build-time=org.apache.fury.memory.MemoryBuffer,\
     com.google.common.collect.RegularImmutableSortedSet,\
     org.apache.fury.type.Descriptor,\
     org.apache.fury.serializer.PrimitiveSerializers$1,\
-    org.slf4j.LoggerFactory,\
     org.apache.fury.collection.MultiKeyWeakMap,\
     org.apache.fury.serializer.collection.UnmodifiableSerializers,\
     org.apache.fury.codegen.CompileUnit,\
@@ -169,5 +169,4 @@ 
Args=--initialize-at-build-time=org.apache.fury.memory.MemoryBuffer,\
     org.apache.fury.memory.MemoryUtils,\
     org.apache.fury.type.DescriptorGrouper,\
     sun.misc.Unsafe,\
-    org.slf4j.LoggerFactory,\
     com.google.common.collect.Platform
diff --git 
a/java/fury-core/src/test/java/org/apache/fury/CrossLanguageTest.java 
b/java/fury-core/src/test/java/org/apache/fury/CrossLanguageTest.java
index 4f722051..81cd55f8 100644
--- a/java/fury-core/src/test/java/org/apache/fury/CrossLanguageTest.java
+++ b/java/fury-core/src/test/java/org/apache/fury/CrossLanguageTest.java
@@ -50,13 +50,13 @@ import java.util.stream.Collectors;
 import java.util.stream.IntStream;
 import lombok.Data;
 import org.apache.fury.config.Language;
+import org.apache.fury.logging.Logger;
+import org.apache.fury.logging.LoggerFactory;
 import org.apache.fury.memory.MemoryBuffer;
 import org.apache.fury.memory.MemoryUtils;
 import org.apache.fury.serializer.BufferObject;
 import org.apache.fury.serializer.Serializer;
-import org.apache.fury.util.LoggerFactory;
 import org.apache.fury.util.MurmurHash3;
-import org.slf4j.Logger;
 import org.testng.Assert;
 import org.testng.annotations.Test;
 
diff --git a/java/fury-core/src/test/java/org/apache/fury/FuryInitPerf.java 
b/java/fury-core/src/test/java/org/apache/fury/FuryInitPerf.java
index 2e3ecfb9..8cf52652 100644
--- a/java/fury-core/src/test/java/org/apache/fury/FuryInitPerf.java
+++ b/java/fury-core/src/test/java/org/apache/fury/FuryInitPerf.java
@@ -25,13 +25,13 @@ import java.util.Collection;
 import java.util.List;
 import org.apache.fury.config.CompatibleMode;
 import org.apache.fury.config.Language;
+import org.apache.fury.logging.Logger;
+import org.apache.fury.logging.LoggerFactory;
 import org.apache.fury.resolver.MetaContext;
 import org.apache.fury.test.bean.BeanA;
 import org.apache.fury.test.bean.BeanB;
 import org.apache.fury.test.bean.Foo;
 import org.apache.fury.type.TypeUtils;
-import org.apache.fury.util.LoggerFactory;
-import org.slf4j.Logger;
 import org.testng.annotations.Test;
 
 @Test(enabled = false)
diff --git 
a/java/fury-core/src/test/java/org/apache/fury/builder/JITContextTest.java 
b/java/fury-core/src/test/java/org/apache/fury/builder/JITContextTest.java
index 1f3943cf..5898ecff 100644
--- a/java/fury-core/src/test/java/org/apache/fury/builder/JITContextTest.java
+++ b/java/fury-core/src/test/java/org/apache/fury/builder/JITContextTest.java
@@ -28,12 +28,12 @@ import org.apache.fury.Fury;
 import org.apache.fury.FuryTestBase;
 import org.apache.fury.config.CompatibleMode;
 import org.apache.fury.config.Language;
+import org.apache.fury.logging.Logger;
+import org.apache.fury.logging.LoggerFactory;
 import org.apache.fury.resolver.MetaContext;
 import org.apache.fury.serializer.Serializer;
 import org.apache.fury.test.bean.BeanA;
 import org.apache.fury.test.bean.BeanB;
-import org.apache.fury.util.LoggerFactory;
-import org.slf4j.Logger;
 import org.testng.Assert;
 import org.testng.annotations.DataProvider;
 import org.testng.annotations.Test;
diff --git 
a/java/fury-core/src/test/java/org/apache/fury/collection/MultiKeyWeakMapTest.java
 
b/java/fury-core/src/test/java/org/apache/fury/collection/MultiKeyWeakMapTest.java
index 1c527450..35f0be2c 100644
--- 
a/java/fury-core/src/test/java/org/apache/fury/collection/MultiKeyWeakMapTest.java
+++ 
b/java/fury-core/src/test/java/org/apache/fury/collection/MultiKeyWeakMapTest.java
@@ -22,8 +22,8 @@ package org.apache.fury.collection;
 import java.lang.ref.Reference;
 import java.lang.reflect.Field;
 import java.util.Set;
-import org.apache.fury.util.LoggerFactory;
-import org.slf4j.Logger;
+import org.apache.fury.logging.Logger;
+import org.apache.fury.logging.LoggerFactory;
 import org.testng.annotations.Test;
 
 public class MultiKeyWeakMapTest {
diff --git 
a/java/benchmark/src/main/java/org/apache/fury/benchmark/state/ObjectType.java 
b/java/fury-core/src/test/java/org/apache/fury/logging/Slf4jLoggerTest.java
similarity index 52%
copy from 
java/benchmark/src/main/java/org/apache/fury/benchmark/state/ObjectType.java
copy to 
java/fury-core/src/test/java/org/apache/fury/logging/Slf4jLoggerTest.java
index c5765e19..a10226af 100644
--- 
a/java/benchmark/src/main/java/org/apache/fury/benchmark/state/ObjectType.java
+++ b/java/fury-core/src/test/java/org/apache/fury/logging/Slf4jLoggerTest.java
@@ -17,30 +17,23 @@
  * under the License.
  */
 
-package org.apache.fury.benchmark.state;
+package org.apache.fury.logging;
 
-import org.apache.fury.benchmark.data.MediaContent;
-import org.apache.fury.benchmark.data.Sample;
-import org.apache.fury.benchmark.data.Struct;
+import org.testng.annotations.Test;
 
-public enum ObjectType {
-  SAMPLE,
-  MEDIA_CONTENT,
-  STRUCT,
-  STRUCT2;
+public class Slf4jLoggerTest {
 
-  public static Object createObject(ObjectType objectType, boolean references) 
{
-    switch (objectType) {
-      case SAMPLE:
-        return new Sample().populate(references);
-      case MEDIA_CONTENT:
-        return new MediaContent().populate(references);
-      case STRUCT:
-        return Struct.create(false);
-      case STRUCT2:
-        return Struct.create(true);
-      default:
-        throw new UnsupportedOperationException(String.valueOf(objectType));
-    }
+  @Test
+  public void testInfo() {
+    Slf4jLogger logger = new Slf4jLogger((Slf4jLoggerTest.class));
+    FuryLogger furyLogger = new FuryLogger((Slf4jLoggerTest.class));
+    logger.info("testInfo");
+    logger.info("testInfo {}", "placeHolder");
+    logger.warn("testInfo {}", "placeHolder");
+    logger.error("testInfo {}", "placeHolder", new Exception("test log"));
+    furyLogger.info("testInfo");
+    furyLogger.info("testInfo {}", "placeHolder");
+    furyLogger.warn("testInfo {}", "placeHolder");
+    furyLogger.error("testInfo {}", "placeHolder", new Exception("test log"));
   }
 }
diff --git 
a/java/fury-core/src/test/java/org/apache/fury/resolver/ClassResolverTest.java 
b/java/fury-core/src/test/java/org/apache/fury/resolver/ClassResolverTest.java
index 0ad7fd58..7179b390 100644
--- 
a/java/fury-core/src/test/java/org/apache/fury/resolver/ClassResolverTest.java
+++ 
b/java/fury-core/src/test/java/org/apache/fury/resolver/ClassResolverTest.java
@@ -48,6 +48,8 @@ import org.apache.fury.Fury;
 import org.apache.fury.FuryTestBase;
 import org.apache.fury.builder.Generated;
 import org.apache.fury.config.Language;
+import org.apache.fury.logging.Logger;
+import org.apache.fury.logging.LoggerFactory;
 import org.apache.fury.memory.MemoryBuffer;
 import org.apache.fury.memory.MemoryUtils;
 import org.apache.fury.resolver.longlongpkg.C1;
@@ -62,8 +64,6 @@ import 
org.apache.fury.serializer.collection.CollectionSerializers;
 import org.apache.fury.serializer.collection.MapSerializers;
 import org.apache.fury.test.bean.BeanB;
 import org.apache.fury.type.TypeUtils;
-import org.apache.fury.util.LoggerFactory;
-import org.slf4j.Logger;
 import org.testng.Assert;
 import org.testng.annotations.Test;
 
diff --git 
a/java/fury-core/src/test/java/org/apache/fury/util/PlatformTest.java 
b/java/fury-core/src/test/java/org/apache/fury/util/PlatformTest.java
index d18588da..f00b640e 100644
--- a/java/fury-core/src/test/java/org/apache/fury/util/PlatformTest.java
+++ b/java/fury-core/src/test/java/org/apache/fury/util/PlatformTest.java
@@ -25,7 +25,8 @@ import static org.testng.Assert.assertTrue;
 import java.nio.ByteBuffer;
 import java.nio.charset.StandardCharsets;
 import java.util.Arrays;
-import org.slf4j.Logger;
+import org.apache.fury.logging.Logger;
+import org.apache.fury.logging.LoggerFactory;
 import org.testng.annotations.Test;
 
 public class PlatformTest {
@@ -128,9 +129,7 @@ public class PlatformTest {
         }
         long duration = System.nanoTime() - startTime;
         buffer.putLong(0, 1);
-        if (LOG.isInfoEnabled()) {
-          LOG.info("wrapDirectBuffer costs " + duration + "ns " + duration / 
1000_000 + "ms\n");
-        }
+        LOG.info("wrapDirectBuffer costs " + duration + "ns " + duration / 
1000_000 + "ms\n");
       }
       {
         for (int i = 0; i < nums; i++) {
@@ -142,9 +141,7 @@ public class PlatformTest {
         }
         long duration = System.nanoTime() - startTime;
         buffer.putLong(0, 1);
-        if (LOG.isInfoEnabled()) {
-          LOG.info("wrap into buffer costs " + duration + "ns " + duration / 
1000_000 + "ms\n");
-        }
+        LOG.info("wrap into buffer costs " + duration + "ns " + duration / 
1000_000 + "ms\n");
       }
       {
         byte[] arr = new byte[32];
@@ -158,9 +155,7 @@ public class PlatformTest {
         }
         long duration = System.nanoTime() - startTime;
         buf.putLong(0, 1);
-        if (LOG.isInfoEnabled()) {
-          LOG.info("ByteBuffer.wrap " + duration + "ns " + duration / 1000_000 
+ "ms\n");
-        }
+        LOG.info("ByteBuffer.wrap " + duration + "ns " + duration / 1000_000 + 
"ms\n");
       }
     } finally {
       Platform.freeMemory(address);
diff --git 
a/java/fury-format/src/main/java/org/apache/fury/format/encoder/ArrayEncoderBuilder.java
 
b/java/fury-format/src/main/java/org/apache/fury/format/encoder/ArrayEncoderBuilder.java
index 376de3f8..62ff1fdb 100644
--- 
a/java/fury-format/src/main/java/org/apache/fury/format/encoder/ArrayEncoderBuilder.java
+++ 
b/java/fury-format/src/main/java/org/apache/fury/format/encoder/ArrayEncoderBuilder.java
@@ -32,10 +32,10 @@ import org.apache.fury.codegen.ExpressionUtils;
 import org.apache.fury.format.row.binary.BinaryArray;
 import org.apache.fury.format.row.binary.writer.BinaryArrayWriter;
 import org.apache.fury.format.type.TypeInference;
+import org.apache.fury.logging.Logger;
+import org.apache.fury.logging.LoggerFactory;
 import org.apache.fury.type.TypeUtils;
-import org.apache.fury.util.LoggerFactory;
 import org.apache.fury.util.StringUtils;
-import org.slf4j.Logger;
 
 /** Expression builder for building jit array encoder class. */
 public class ArrayEncoderBuilder extends BaseBinaryEncoderBuilder {
@@ -106,7 +106,7 @@ public class ArrayEncoderBuilder extends 
BaseBinaryEncoderBuilder {
     long startTime = System.nanoTime();
     String code = ctx.genCode();
     long durationMs = (System.nanoTime() - startTime) / 1000_000;
-    LOG.debug("Generate array codec for class {} take {} us", beanClass, 
durationMs);
+    LOG.info("Generate array codec for class {} take {} us", beanClass, 
durationMs);
     return code;
   }
 
diff --git 
a/java/fury-format/src/main/java/org/apache/fury/format/encoder/Encoders.java 
b/java/fury-format/src/main/java/org/apache/fury/format/encoder/Encoders.java
index 37507737..22b6f8a7 100644
--- 
a/java/fury-format/src/main/java/org/apache/fury/format/encoder/Encoders.java
+++ 
b/java/fury-format/src/main/java/org/apache/fury/format/encoder/Encoders.java
@@ -41,11 +41,11 @@ import 
org.apache.fury.format.row.binary.writer.BinaryArrayWriter;
 import org.apache.fury.format.row.binary.writer.BinaryRowWriter;
 import org.apache.fury.format.type.DataTypes;
 import org.apache.fury.format.type.TypeInference;
+import org.apache.fury.logging.Logger;
+import org.apache.fury.logging.LoggerFactory;
 import org.apache.fury.memory.MemoryBuffer;
 import org.apache.fury.memory.MemoryUtils;
 import org.apache.fury.type.TypeUtils;
-import org.apache.fury.util.LoggerFactory;
-import org.slf4j.Logger;
 
 /**
  * Factory to create {@link Encoder}.
@@ -353,7 +353,7 @@ public class Encoders {
 
     Set<TypeToken<?>> set1 = beanSet(tuple2.f0);
     Set<TypeToken<?>> set2 = beanSet(tuple2.f1);
-    LOG.debug("Find beans to load: {}, {}", set1, set2);
+    LOG.info("Find beans to load: {}, {}", set1, set2);
 
     if (set1.isEmpty() && set2.isEmpty()) {
       throw new IllegalArgumentException("can not find bean class.");
@@ -456,7 +456,7 @@ public class Encoders {
     for (TypeToken<?> tt : set) {
       keyToken = tt;
       Encoders.loadOrGenRowCodecClass(getRawType(tt));
-      LOG.debug("bean {} load finished", getRawType(tt));
+      LOG.info("bean {} load finished", getRawType(tt));
     }
     return keyToken;
   }
@@ -525,7 +525,7 @@ public class Encoders {
 
   public static Class<?> loadOrGenRowCodecClass(Class<?> beanClass) {
     Set<Class<?>> classes = TypeUtils.listBeansRecursiveInclusive(beanClass);
-    LOG.debug("Create RowCodec for classes {}", classes);
+    LOG.info("Create RowCodec for classes {}", classes);
     CompileUnit[] compileUnits =
         classes.stream()
             .map(
@@ -543,7 +543,7 @@ public class Encoders {
 
   private static <B> Class<?> loadOrGenArrayCodecClass(
       TypeToken<? extends Collection> arrayCls, TypeToken<B> elementType) {
-    LOG.debug("Create ArrayCodec for classes {}", elementType);
+    LOG.info("Create ArrayCodec for classes {}", elementType);
     Class<?> cls = getRawType(elementType);
     // class name prefix
     String prefix = TypeInference.inferTypeName(arrayCls);
@@ -560,7 +560,7 @@ public class Encoders {
 
   private static <K, V> Class<?> loadOrGenMapCodecClass(
       TypeToken<? extends Map> mapCls, TypeToken<K> keyToken, TypeToken<V> 
valueToken) {
-    LOG.debug("Create MapCodec for classes {}, {}", keyToken, valueToken);
+    LOG.info("Create MapCodec for classes {}, {}", keyToken, valueToken);
     boolean keyIsBean = TypeUtils.isBean(keyToken);
     boolean valIsBean = TypeUtils.isBean(valueToken);
     TypeToken<?> beanToken;
diff --git 
a/java/fury-format/src/main/java/org/apache/fury/format/encoder/MapEncoderBuilder.java
 
b/java/fury-format/src/main/java/org/apache/fury/format/encoder/MapEncoderBuilder.java
index 1126181e..c61a4ee4 100644
--- 
a/java/fury-format/src/main/java/org/apache/fury/format/encoder/MapEncoderBuilder.java
+++ 
b/java/fury-format/src/main/java/org/apache/fury/format/encoder/MapEncoderBuilder.java
@@ -34,10 +34,10 @@ import org.apache.fury.format.row.binary.BinaryArray;
 import org.apache.fury.format.row.binary.BinaryMap;
 import org.apache.fury.format.row.binary.writer.BinaryArrayWriter;
 import org.apache.fury.format.type.TypeInference;
+import org.apache.fury.logging.Logger;
+import org.apache.fury.logging.LoggerFactory;
 import org.apache.fury.type.TypeUtils;
-import org.apache.fury.util.LoggerFactory;
 import org.apache.fury.util.StringUtils;
-import org.slf4j.Logger;
 
 /** Expression builder for building jit map encoder class. */
 @SuppressWarnings("UnstableApiUsage")
@@ -140,7 +140,7 @@ public class MapEncoderBuilder extends 
BaseBinaryEncoderBuilder {
     long startTime = System.nanoTime();
     String code = ctx.genCode();
     long durationMs = (System.nanoTime() - startTime) / 1000_000;
-    LOG.debug("Generate map codec for class {} take {} us", beanClass, 
durationMs);
+    LOG.info("Generate map codec for class {} take {} us", beanClass, 
durationMs);
     return code;
   }
 
diff --git 
a/java/fury-format/src/main/java/org/apache/fury/format/encoder/RowEncoderBuilder.java
 
b/java/fury-format/src/main/java/org/apache/fury/format/encoder/RowEncoderBuilder.java
index d35f3fe8..9c95b097 100644
--- 
a/java/fury-format/src/main/java/org/apache/fury/format/encoder/RowEncoderBuilder.java
+++ 
b/java/fury-format/src/main/java/org/apache/fury/format/encoder/RowEncoderBuilder.java
@@ -46,13 +46,13 @@ import org.apache.fury.format.row.binary.BinaryUtils;
 import org.apache.fury.format.row.binary.writer.BinaryRowWriter;
 import org.apache.fury.format.type.DataTypes;
 import org.apache.fury.format.type.TypeInference;
+import org.apache.fury.logging.Logger;
+import org.apache.fury.logging.LoggerFactory;
 import org.apache.fury.type.Descriptor;
 import org.apache.fury.type.TypeUtils;
 import org.apache.fury.util.GraalvmSupport;
-import org.apache.fury.util.LoggerFactory;
 import org.apache.fury.util.Preconditions;
 import org.apache.fury.util.StringUtils;
-import org.slf4j.Logger;
 
 /** Expression builder for building jit row encoder class. */
 @SuppressWarnings("UnstableApiUsage")
@@ -143,7 +143,7 @@ public class RowEncoderBuilder extends 
BaseBinaryEncoderBuilder {
     long startTime = System.nanoTime();
     String code = ctx.genCode();
     long durationMs = (System.nanoTime() - startTime) / 1000;
-    LOG.debug("Generate codec for class {} take {} us", beanClass, durationMs);
+    LOG.info("Generate codec for class {} take {} us", beanClass, durationMs);
     return code;
   }
 
diff --git 
a/java/fury-format/src/test/java/org/apache/fury/format/CrossLanguageTest.java 
b/java/fury-format/src/test/java/org/apache/fury/format/CrossLanguageTest.java
index edab44de..c3f1646c 100644
--- 
a/java/fury-format/src/test/java/org/apache/fury/format/CrossLanguageTest.java
+++ 
b/java/fury-format/src/test/java/org/apache/fury/format/CrossLanguageTest.java
@@ -63,11 +63,11 @@ import org.apache.fury.format.vectorized.ArrowTable;
 import org.apache.fury.format.vectorized.ArrowUtils;
 import org.apache.fury.format.vectorized.ArrowWriter;
 import org.apache.fury.io.MemoryBufferOutputStream;
+import org.apache.fury.logging.Logger;
+import org.apache.fury.logging.LoggerFactory;
 import org.apache.fury.memory.MemoryBuffer;
 import org.apache.fury.memory.MemoryUtils;
 import org.apache.fury.serializer.BufferObject;
-import org.apache.fury.util.LoggerFactory;
-import org.slf4j.Logger;
 import org.testng.Assert;
 import org.testng.annotations.Test;
 
diff --git 
a/java/fury-format/src/test/java/org/apache/fury/format/row/binary/BinaryArrayTest.java
 
b/java/fury-format/src/test/java/org/apache/fury/format/row/binary/BinaryArrayTest.java
index e133297e..4ddba406 100644
--- 
a/java/fury-format/src/test/java/org/apache/fury/format/row/binary/BinaryArrayTest.java
+++ 
b/java/fury-format/src/test/java/org/apache/fury/format/row/binary/BinaryArrayTest.java
@@ -22,8 +22,8 @@ package org.apache.fury.format.row.binary;
 import java.util.Random;
 import org.apache.fury.format.row.binary.writer.BinaryArrayWriter;
 import org.apache.fury.format.type.DataTypes;
-import org.apache.fury.util.LoggerFactory;
-import org.slf4j.Logger;
+import org.apache.fury.logging.Logger;
+import org.apache.fury.logging.LoggerFactory;
 import org.testng.Assert;
 import org.testng.annotations.Test;
 
@@ -67,9 +67,7 @@ public class BinaryArrayTest {
       }
     }
     long duration = System.nanoTime() - startTime;
-    if (LOG.isInfoEnabled()) {
-      LOG.info("access array take " + duration + "ns, " + duration / 1000_000 
+ " ms\n");
-    }
+    LOG.info("access array take " + duration + "ns, " + duration / 1000_000 + 
" ms\n");
 
     for (int i = 0; i < iterNums; i++) {
       for (int j = 0; j < length; j++) {
@@ -84,9 +82,7 @@ public class BinaryArrayTest {
       }
     }
     duration = System.nanoTime() - startTime;
-    if (LOG.isInfoEnabled()) {
-      LOG.info("access BinaryArray take " + duration + "ns, " + duration / 
1000_000 + " ms\n");
-    }
+    LOG.info("access BinaryArray take " + duration + "ns, " + duration / 
1000_000 + " ms\n");
   }
 
   @Test
diff --git 
a/java/fury-format/src/test/java/org/apache/fury/format/row/binary/BinaryRowTest.java
 
b/java/fury-format/src/test/java/org/apache/fury/format/row/binary/BinaryRowTest.java
index 5cf23c42..3cd0336b 100644
--- 
a/java/fury-format/src/test/java/org/apache/fury/format/row/binary/BinaryRowTest.java
+++ 
b/java/fury-format/src/test/java/org/apache/fury/format/row/binary/BinaryRowTest.java
@@ -27,11 +27,11 @@ import org.apache.arrow.vector.types.pojo.Schema;
 import org.apache.fury.format.row.binary.writer.BinaryArrayWriter;
 import org.apache.fury.format.row.binary.writer.BinaryRowWriter;
 import org.apache.fury.format.type.DataTypes;
+import org.apache.fury.logging.Logger;
+import org.apache.fury.logging.LoggerFactory;
 import org.apache.fury.memory.MemoryBuffer;
 import org.apache.fury.memory.MemoryUtils;
-import org.apache.fury.util.LoggerFactory;
 import org.apache.fury.util.Platform;
-import org.slf4j.Logger;
 import org.testng.annotations.Test;
 
 public class BinaryRowTest {
@@ -104,9 +104,7 @@ public class BinaryRowTest {
       }
     }
     long duration = System.nanoTime() - startTime;
-    if (LOG.isInfoEnabled()) {
-      LOG.info("Array access offset take " + duration + "ns, " + duration / 
1000_000 + " ms\n");
-    }
+    LOG.info("Array access offset take " + duration + "ns, " + duration / 
1000_000 + " ms\n");
 
     int headerInBytes = 64;
     // warm
@@ -125,9 +123,7 @@ public class BinaryRowTest {
       }
     }
     duration = System.nanoTime() - startTime;
-    if (LOG.isInfoEnabled()) {
-      LOG.info("Compute access offset take " + duration + "ns, " + duration / 
1000_000 + " ms\n");
-    }
+    LOG.info("Compute access offset take " + duration + "ns, " + duration / 
1000_000 + " ms\n");
   }
 
   @Test
diff --git 
a/java/fury-testsuite/src/test/java/org/apache/fury/benchmark/DeserializationBenchmark.java
 
b/java/fury-testsuite/src/test/java/org/apache/fury/benchmark/DeserializationBenchmark.java
index fb5c1e5f..b091df05 100644
--- 
a/java/fury-testsuite/src/test/java/org/apache/fury/benchmark/DeserializationBenchmark.java
+++ 
b/java/fury-testsuite/src/test/java/org/apache/fury/benchmark/DeserializationBenchmark.java
@@ -35,11 +35,11 @@ import org.apache.fury.config.Language;
 import org.apache.fury.format.encoder.Encoders;
 import org.apache.fury.format.encoder.RowEncoder;
 import org.apache.fury.format.row.binary.BinaryRow;
+import org.apache.fury.logging.Logger;
+import org.apache.fury.logging.LoggerFactory;
 import org.apache.fury.test.bean.Foo;
-import org.apache.fury.util.LoggerFactory;
 import org.nustaq.serialization.FSTConfiguration;
 import org.objenesis.strategy.StdInstantiatorStrategy;
-import org.slf4j.Logger;
 import org.testng.annotations.BeforeTest;
 import org.testng.annotations.Test;
 
@@ -52,9 +52,7 @@ public class DeserializationBenchmark {
   public void setArrSize() {
     int defaultIterNums = 20000000;
     iterNums = Integer.parseInt(System.getProperty("iterNums", 
String.valueOf(defaultIterNums)));
-    if (LOG.isInfoEnabled()) {
-      LOG.info("iterNums: " + iterNums);
-    }
+    LOG.info("iterNums: " + iterNums);
   }
 
   // mvn test 
-Dtest=org.apache.fury.benchmark.DeserializationBenchmark#deserializationBenchmark
@@ -90,18 +88,16 @@ public class DeserializationBenchmark {
       encoder.fromRow(row);
     }
     long duration = System.nanoTime() - startTime;
-    if (LOG.isInfoEnabled()) {
-      LOG.info(
-          "encoder decode\t take "
-              + duration
-              + " ns, "
-              + duration / 1000_000
-              + "ms. "
-              + (double) duration / iterNums
-              + "/ns, "
-              + (double) duration / iterNums / 1000_000
-              + "/ms\n");
-    }
+    LOG.info(
+        "encoder decode\t take "
+            + duration
+            + " ns, "
+            + duration / 1000_000
+            + "ms. "
+            + (double) duration / iterNums
+            + "/ns, "
+            + (double) duration / iterNums / 1000_000
+            + "/ms\n");
   }
 
   private void testFury(Object obj) {
@@ -125,18 +121,16 @@ public class DeserializationBenchmark {
       fury.deserialize(serializedBytes);
     }
     long duration = System.nanoTime() - startTime;
-    if (LOG.isInfoEnabled()) {
-      LOG.info(
-          "fury decode\t take "
-              + duration
-              + " ns, "
-              + duration / 1000_000
-              + "ms. "
-              + (double) duration / iterNums
-              + "/ns, "
-              + (double) duration / iterNums / 1000_000
-              + "/ms\n");
-    }
+    LOG.info(
+        "fury decode\t take "
+            + duration
+            + " ns, "
+            + duration / 1000_000
+            + "ms. "
+            + (double) duration / iterNums
+            + "/ns, "
+            + (double) duration / iterNums / 1000_000
+            + "/ms\n");
   }
 
   private void testFst(Object obj) {
@@ -158,18 +152,16 @@ public class DeserializationBenchmark {
     }
     System.out.println(newObj);
     long duration = System.nanoTime() - startTime;
-    if (LOG.isInfoEnabled()) {
-      LOG.info(
-          "fst\t take "
-              + duration
-              + " ns, "
-              + duration / 1000_000
-              + "ms. "
-              + (double) duration / iterNums
-              + "/ns, "
-              + (double) duration / iterNums / 1000_000
-              + "/ms\n");
-    }
+    LOG.info(
+        "fst\t take "
+            + duration
+            + " ns, "
+            + duration / 1000_000
+            + "ms. "
+            + (double) duration / iterNums
+            + "/ns, "
+            + (double) duration / iterNums / 1000_000
+            + "/ms\n");
   }
 
   private void testKryo(Object obj) {
@@ -193,18 +185,16 @@ public class DeserializationBenchmark {
     }
     System.out.println(newObj);
     long duration = System.nanoTime() - startTime;
-    if (LOG.isInfoEnabled()) {
-      LOG.info(
-          "kryo decode\t take "
-              + duration
-              + " ns, "
-              + duration / 1000_000
-              + "ms. "
-              + (double) duration / iterNums
-              + "/ns, "
-              + (double) duration / iterNums / 1000_000
-              + "/ms\n");
-    }
+    LOG.info(
+        "kryo decode\t take "
+            + duration
+            + " ns, "
+            + duration / 1000_000
+            + "ms. "
+            + (double) duration / iterNums
+            + "/ns, "
+            + (double) duration / iterNums / 1000_000
+            + "/ms\n");
   }
 
   private void testJDK(Object data) throws Exception {
@@ -237,18 +227,16 @@ public class DeserializationBenchmark {
     }
     System.out.println(System.identityHashCode(((ArrayList) newObj).get(1)));
     long duration = System.nanoTime() - startTime;
-    if (LOG.isInfoEnabled()) {
-      LOG.info(
-          "jdk\t {} take "
-              + duration
-              + " ns, "
-              + duration / 1000_000
-              + "ms. "
-              + (double) duration / iterNums
-              + "/ns, "
-              + (double) duration / iterNums / 1000_000
-              + "/ms\n",
-          bas.size());
-    }
+    LOG.info(
+        "jdk\t {} take "
+            + duration
+            + " ns, "
+            + duration / 1000_000
+            + "ms. "
+            + (double) duration / iterNums
+            + "/ns, "
+            + (double) duration / iterNums / 1000_000
+            + "/ms\n",
+        bas.size());
   }
 }
diff --git 
a/java/fury-testsuite/src/test/java/org/apache/fury/benchmark/SerializationBenchmark.java
 
b/java/fury-testsuite/src/test/java/org/apache/fury/benchmark/SerializationBenchmark.java
index aa5031ca..56ac0f28 100644
--- 
a/java/fury-testsuite/src/test/java/org/apache/fury/benchmark/SerializationBenchmark.java
+++ 
b/java/fury-testsuite/src/test/java/org/apache/fury/benchmark/SerializationBenchmark.java
@@ -28,12 +28,12 @@ import org.apache.fury.Fury;
 import org.apache.fury.config.Language;
 import org.apache.fury.format.encoder.Encoders;
 import org.apache.fury.format.encoder.RowEncoder;
+import org.apache.fury.logging.Logger;
+import org.apache.fury.logging.LoggerFactory;
 import org.apache.fury.memory.MemoryBuffer;
 import org.apache.fury.memory.MemoryUtils;
 import org.apache.fury.test.bean.Foo;
-import org.apache.fury.util.LoggerFactory;
 import org.nustaq.serialization.FSTConfiguration;
-import org.slf4j.Logger;
 import org.testng.annotations.BeforeTest;
 import org.testng.annotations.Test;
 
@@ -46,9 +46,7 @@ public class SerializationBenchmark {
   public void setArrSize() {
     int defaultIterNums = 20000000;
     iterNums = Integer.parseInt(System.getProperty("iterNums", 
String.valueOf(defaultIterNums)));
-    if (LOG.isInfoEnabled()) {
-      LOG.info("iterNums: " + iterNums);
-    }
+    LOG.info("iterNums: " + iterNums);
   }
 
   // mvn test -DargLine="-XX:+PrintCompilation -XX:+UnlockDiagnosticVMOptions 
-XX:+PrintInlining"
@@ -86,18 +84,16 @@ public class SerializationBenchmark {
     }
     long duration = System.nanoTime() - startTime;
 
-    if (LOG.isInfoEnabled()) {
-      LOG.info(
-          "encoder\t take "
-              + duration
-              + " ns, "
-              + duration / 1000_000
-              + "ms. "
-              + (double) duration / iterNums
-              + "/ns, "
-              + (double) duration / iterNums / 1000_000
-              + "/ms\n");
-    }
+    LOG.info(
+        "encoder\t take "
+            + duration
+            + " ns, "
+            + duration / 1000_000
+            + "ms. "
+            + (double) duration / iterNums
+            + "/ns, "
+            + (double) duration / iterNums / 1000_000
+            + "/ms\n");
   }
 
   private void testFury(Object obj) {
@@ -121,19 +117,17 @@ public class SerializationBenchmark {
       fury.writeRef(buffer, obj);
     }
     long duration = System.nanoTime() - startTime;
-    if (LOG.isInfoEnabled()) {
-      LOG.info(
-          "fury\t size {} take "
-              + duration
-              + " ns, "
-              + duration / 1000_000
-              + "ms. "
-              + (double) duration / iterNums
-              + "/ns, "
-              + (double) duration / iterNums / 1000_000
-              + "/ms\n",
-          buffer.writerIndex());
-    }
+    LOG.info(
+        "fury\t size {} take "
+            + duration
+            + " ns, "
+            + duration / 1000_000
+            + "ms. "
+            + (double) duration / iterNums
+            + "/ns, "
+            + (double) duration / iterNums / 1000_000
+            + "/ms\n",
+        buffer.writerIndex());
   }
 
   private void testFst(Object obj) {
@@ -154,19 +148,17 @@ public class SerializationBenchmark {
       bytes = fstConf.asByteArray(obj);
     }
     long duration = System.nanoTime() - startTime;
-    if (LOG.isInfoEnabled()) {
-      LOG.info(
-          "fst\t size {} take "
-              + duration
-              + " ns, "
-              + duration / 1000_000
-              + "ms. "
-              + (double) duration / iterNums
-              + "/ns, "
-              + (double) duration / iterNums / 1000_000
-              + "/ms\n",
-          bytes.length);
-    }
+    LOG.info(
+        "fst\t size {} take "
+            + duration
+            + " ns, "
+            + duration / 1000_000
+            + "ms. "
+            + (double) duration / iterNums
+            + "/ns, "
+            + (double) duration / iterNums / 1000_000
+            + "/ms\n",
+        bytes.length);
   }
 
   private void testKryo(Object obj) {
@@ -188,19 +180,17 @@ public class SerializationBenchmark {
     long duration = System.nanoTime() - startTime;
     Output output = new Output(64, Integer.MAX_VALUE);
     kryo.writeObject(output, obj);
-    if (LOG.isInfoEnabled()) {
-      LOG.info(
-          "kryo\t {} take "
-              + duration
-              + " ns, "
-              + duration / 1000_000
-              + "ms. "
-              + (double) duration / iterNums
-              + "/ns, "
-              + (double) duration / iterNums / 1000_000
-              + "/ms\n",
-          output.position());
-    }
+    LOG.info(
+        "kryo\t {} take "
+            + duration
+            + " ns, "
+            + duration / 1000_000
+            + "ms. "
+            + (double) duration / iterNums
+            + "/ns, "
+            + (double) duration / iterNums / 1000_000
+            + "/ms\n",
+        output.position());
   }
 
   private void testJDK(Object data) {
@@ -228,18 +218,16 @@ public class SerializationBenchmark {
       }
     }
     long duration = System.nanoTime() - startTime;
-    if (LOG.isInfoEnabled()) {
-      LOG.info(
-          "jdk\t {} take "
-              + duration
-              + " ns, "
-              + duration / 1000_000
-              + "ms. "
-              + (double) duration / iterNums
-              + "/ns, "
-              + (double) duration / iterNums / 1000_000
-              + "/ms\n",
-          bas.size());
-    }
+    LOG.info(
+        "jdk\t {} take "
+            + duration
+            + " ns, "
+            + duration / 1000_000
+            + "ms. "
+            + (double) duration / iterNums
+            + "/ns, "
+            + (double) duration / iterNums / 1000_000
+            + "/ms\n",
+        bas.size());
   }
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]


Reply via email to