【常用工具类】Java控制台打印工具类LogUtil

简介: 【常用工具类】Java控制台打印工具类LogUtil

@[toc]


1 带分割线版

在这里插入图片描述

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * W SKH 的输出工具类
 */
public class LogUtil {

    private SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd,HH:mm:ss.SSS");
    private String line = "------------------------------------------------------------------------------------------------------------------------------------------------------";

    public void common(String message, boolean canBePrint) {
        if (canBePrint) {
            String str = "Info-[" + simpleDateFormat.format(new Date()) + "]:" + line + "\n" + message;
            System.out.format("\033[1;29m","utf-8");
            System.out.println(str);
            after();
        }
    }

    public void info(String message, boolean canBePrint) {
        if (canBePrint) {
            String str = "Info-[" + simpleDateFormat.format(new Date()) + "]:" + line + "\n" + message;
            System.out.format("\033[1;34m");
            System.out.println(str);
            after();
        }
    }

    public void error(String message, boolean canBePrint) {
        if (canBePrint) {
            String str = "Error-[" + simpleDateFormat.format(new Date()) + "]:" + line + "\n" + message;
            System.out.format("\033[1;31m");
            System.out.println(str);
            after();
        }
    }

    public void success(String message, boolean canBePrint) {
        if (canBePrint) {
            String str = "Success-[" + simpleDateFormat.format(new Date()) + "]:" + line + "\n" + message;
            System.out.format("\033[1;32m");
            System.out.println(str);
            after();
        }
    }

    public void warning(String message, boolean canBePrint) {
        if (canBePrint) {
            String str = "Warning-[" + simpleDateFormat.format(new Date()) + "]:" + line + "\n" + message;
            System.out.format("\033[1;33m");
            System.out.println(str);
            after();
        }
    }

    public void after() {
        System.out.format("\033[0;29m");
    }

}

2 不带分割线版

在这里插入图片描述

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * W SKH 的输出工具类
 */
public class LogUtil {

    private SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd,HH:mm:ss.SSS");

    public void common(String message, boolean canBePrint) {
        if (canBePrint) {
            String str = "Common-[" + simpleDateFormat.format(new Date()) + "] : " + message;
            System.out.format("\033[1;29m","utf-8");
            System.out.println(str);
            after();
        }
    }

    public void info(String message, boolean canBePrint) {
        if (canBePrint) {
            String str = "Info-[" + simpleDateFormat.format(new Date()) + "] : "+ message;
            System.out.format("\033[1;34m");
            System.out.println(str);
            after();
        }
    }

    public void error(String message, boolean canBePrint) {
        if (canBePrint) {
            String str = "Error-[" + simpleDateFormat.format(new Date()) + "] : " + message;
            System.out.format("\033[1;31m");
            System.out.println(str);
            after();
        }
    }

    public void success(String message, boolean canBePrint) {
        if (canBePrint) {
            String str = "Success-[" + simpleDateFormat.format(new Date()) + "] : " + message;
            System.out.format("\033[1;32m");
            System.out.println(str);
            after();
        }
    }

    public void warning(String message, boolean canBePrint) {
        if (canBePrint) {
            String str = "Warning-[" + simpleDateFormat.format(new Date()) + "] :" + message;
            System.out.format("\033[1;33m");
            System.out.println(str);
            after();
        }
    }

    public void after() {
        System.out.format("\033[0;29m");
    }

}

3 终极版

终极版取消了字体加粗,并且增加了warning和debug两种输出格式,在输出的信息中可以定位到使用LogUtil输出的语句所在位置,例如下图所示 util.TestLog.main.18(就是说在util包下的TestLog类中的main方法里,输出语句位于该类的18行)

在这里插入图片描述

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * W SKH 的输出工具类
 */
public class LogUtil {

    protected static SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS");
    protected static String after = "\033[0;29m";
    public static boolean canBePrint = true;


    public static void common(String message) {
        if (canBePrint) {
            StackTraceElement stackTraceElement = new Throwable().getStackTrace()[1];
            String classMsg = stackTraceElement.getClassName() + "." + stackTraceElement.getMethodName() + "." + stackTraceElement.getLineNumber();
            System.out.format("\033[0;29m");
            System.out.printf("%-8s", "COMMON");
            System.out.printf("%-26s", "[" + simpleDateFormat.format(new Date()) + "]");
            System.out.printf("%-1s", "[" + classMsg + "]");
            System.out.print(" : " + message + "\n");
            after();
        }
    }

    public static void debug(String message) {
        if (canBePrint) {
            StackTraceElement stackTraceElement = new Throwable().getStackTrace()[1];
            String classMsg = stackTraceElement.getClassName() + "." + stackTraceElement.getMethodName() + "." + stackTraceElement.getLineNumber();
            System.out.format("\033[0;35m");
            System.out.printf("%-8s", "DEBUG");
            System.out.printf("%-26s", "[" + simpleDateFormat.format(new Date()) + "]");
            System.out.printf("%-1s", "[" + classMsg + "]");
            System.out.print(" : " + message + "\n");
            after();
        }
    }

    public static void info(String message) {
        if (canBePrint) {
            StackTraceElement stackTraceElement = new Throwable().getStackTrace()[1];
            String classMsg = stackTraceElement.getClassName() + "." + stackTraceElement.getMethodName() + "." + stackTraceElement.getLineNumber();
            System.out.format("\033[0;34m");
            System.out.printf("%-8s", "INFO");
            System.out.printf("%-26s", "[" + simpleDateFormat.format(new Date()) + "]");
            System.out.printf("%-1s", "[" + classMsg + "]");
            System.out.print(" : " + message + "\n");
            after();
        }
    }

    public static void error(String message) {
        if (canBePrint) {
            StackTraceElement stackTraceElement = new Throwable().getStackTrace()[1];
            String classMsg = stackTraceElement.getClassName() + "." + stackTraceElement.getMethodName() + "." + stackTraceElement.getLineNumber();
            System.out.format("\033[0;31m");
            System.out.printf("%-8s", "ERROR");
            System.out.printf("%-26s", "[" + simpleDateFormat.format(new Date()) + "]");
            System.out.printf("%-1s", "[" + classMsg + "]");
            System.out.print(" : " + message + "\n");
            after();
        }
    }

    public static void success(String message) {
        if (canBePrint) {
            StackTraceElement stackTraceElement = new Throwable().getStackTrace()[1];
            String classMsg = stackTraceElement.getClassName() + "." + stackTraceElement.getMethodName() + "." + stackTraceElement.getLineNumber();
            System.out.format("\033[0;32m");
            System.out.printf("%-8s", "SUCCESS");
            System.out.printf("%-26s", "[" + simpleDateFormat.format(new Date()) + "]");
            System.out.printf("%-1s", "[" + classMsg + "]");
            System.out.print(" : " + message + "\n");
            after();
        }
    }

    public static void warning(String message) {
        if (canBePrint) {
            StackTraceElement stackTraceElement = new Throwable().getStackTrace()[1];
            String classMsg = stackTraceElement.getClassName() + "." + stackTraceElement.getMethodName() + "." + stackTraceElement.getLineNumber();
            System.out.format("\033[0;33m");
            System.out.printf("%-8s", "WARNING");
            System.out.printf("%-26s", "[" + simpleDateFormat.format(new Date()) + "]");
            System.out.printf("%-1s", "[" + classMsg + "]");
            System.out.print(" : " + message + "\n");
            after();
        }
    }

    public static void after() {
        System.out.format(after);
    }

}
目录
相关文章
|
5天前
|
Java 关系型数据库 MySQL
Elasticsearch【问题记录 01】启动服务&停止服务的2类方法【及 java.nio.file.AccessDeniedException: xx/pid 问题解决】(含shell脚本文件)
【4月更文挑战第12天】Elasticsearch【问题记录 01】启动服务&停止服务的2类方法【及 java.nio.file.AccessDeniedException: xx/pid 问题解决】(含shell脚本文件)
33 3
|
1天前
|
人工智能 安全 Java
Java8 - LocalDateTime时间日期类使用详解
Java8 - LocalDateTime时间日期类使用详解
|
2天前
|
安全 Java 程序员
|
3天前
|
Java
Java Class类
Java Class类
8 0
|
7天前
|
安全 Java
深入理解 Java 多线程和并发工具类
【4月更文挑战第19天】本文探讨了Java多线程和并发工具类在实现高性能应用程序中的关键作用。通过继承`Thread`或实现`Runnable`创建线程,利用`Executors`管理线程池,以及使用`Semaphore`、`CountDownLatch`和`CyclicBarrier`进行线程同步。保证线程安全、实现线程协作和性能调优(如设置线程池大小、避免不必要同步)是重要环节。理解并恰当运用这些工具能提升程序效率和可靠性。
|
9天前
|
Java 编译器
Java Character 类
4月更文挑战第13天
|
10天前
|
存储 Java
Java基础教程(7)-Java中的面向对象和类
【4月更文挑战第7天】Java是面向对象编程(OOP)语言,强调将事务抽象成对象。面向对象与面向过程的区别在于,前者通过对象间的交互解决问题,后者按步骤顺序执行。类是对象的模板,对象是类的实例。创建类使用`class`关键字,对象通过`new`运算符动态分配内存。方法包括构造函数和一般方法,构造函数用于对象初始化,一般方法处理逻辑。方法可以有0个或多个参数,可变参数用`类型...`定义。`this`关键字用于访问当前对象的属性。
|
14天前
|
Java Shell
Java 21颠覆传统:未命名类与实例Main方法的编码变革
Java 21颠覆传统:未命名类与实例Main方法的编码变革
13 0
|
14天前
|
Java
Java 15 神秘登场:隐藏类解析未知领域
Java 15 神秘登场:隐藏类解析未知领域
17 0
|
16天前
|
安全 Java
append在Java中是哪个类下的方法
append在Java中是哪个类下的方法
23 9