【常用工具类】Java控制台打印工具类LogUtil_java logutil-程序员宅基地

技术标签: java  工具类  脚本工具  开发语言  


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);
    }

}
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_51545953/article/details/124989679

智能推荐

android html5播放器,用 HTML5 播放器在 iOS 或 Android 等移动设备上播放视频-程序员宅基地

文章浏览阅读986次。如果你想把自己网站上的视频弄得能在 iOS 或者 Android 设备上播放,你需要想两个事儿,一个是你网站上的视频播放器要支持 HTML5,还有你的视频得支持在这些设备上看。网站的视频播放器我们可以使用 JW Player,这个播放器有三种模式,Flash,HTML5,下载。就是如果浏览器不支持Flash模式,播放器会切换到 HTML5 模式,都不支持的话可以提供一个下载视频的链接。(你可以设置..._安卓 ios都适配的视频组件 h5

java实现flv转mp4/视频格式转换_java flv 转 mp4-程序员宅基地

文章浏览阅读604次。java实现flv转mp4/视频格式转换,今天在开发过程中,突然遇到给前端flv格式视频还播放不了,flv在开发印象中就是跟mp4格式差不多,本地静态视频资源,怎么还就播放不了,为此只能特别做下视频转换。_java flv 转 mp4

ImportError: cannot import name 'pyplot' from 'matplotlib'-程序员宅基地

文章浏览阅读1.9w次,点赞13次,收藏14次。当前文件名为: matplotlib.pyfrom matplotlib import pyplotyears = [1950,1960,1970,1980,1990,2000,2010]gdb = [300.2,543.3,1075.9,2862.5,5979.6,10289.7,14958.3]# 创建一幅线图,x轴是年份,y轴是gdbpyplot.plot(years,gdb,..._importerror: cannot import name 'pyplot' from 'matplotlib' (unknown location

envi栅格TIF数据进行分割_常用水文气象数据读取及其可视化(二进制、HDF5、NetCDF)以GLDAS、MODIS、GSMaP为例...-程序员宅基地

文章浏览阅读1.1k次。“地学、水文、气象领域的自然科学数据通常以netcdf、hdf、二进制等方式存储,比如温度、降水、蒸发数据等;学会这些数据格式的读取和可视化是进行地学统计分析计算的关键,python提供了解析nc、hdf等数据格式的库,作者整理了如何利用python进行*.nc、*.hdf、*.dat格式数据的读取并进行栅格转换,欢迎转载和关注!”arcpy读取二进制文件---以GSMaP降水数据集为例..._gsmap数据处理

如何对待新事物_以积极态度看待不断出现的新事物-程序员宅基地

文章浏览阅读3.4k次。来源:解放军报 作者:吴铭改革开放以来,与整个社会巨大而深刻的变化相伴随,部队同样经历过很多新事物涌来时的新奇欣喜和疑惑惶恐。从20世纪80年代初期的电子表、收录机、流行歌曲等,到90年代以来的程控电话、互联网、智能手机、微信公众号、私家车等等。每一次新东西扑面而来时,差不多都要经历一个官兵新奇追风,领导机关疑惑抵制,再到逐步适度放开、加强内部管理的过程。怎么认识和对待不断涌现的新事物,实际上是..._应对新兴事物发展

RabbitMQ 集群_rabbitmq集群-程序员宅基地

文章浏览阅读9.5k次,点赞6次,收藏25次。1.2 集群搭建使容器 mq02 称为从节点,容器 mq01 为主节点使容器 mq03 称为从节点,容器 mq01 为主节点1.3 查看集群状态进入任意一个容器内,输入以下命令查看集群状态:_rabbitmq集群

随便推点

usb一转多 树莓派zero_树莓派 Zero USB/以太网方式连接配置教程-程序员宅基地

文章浏览阅读327次。树莓派 Zero 之所以成为一款非常棒的单板计算机并不全因为它小巧的尺寸和便宜的价格,还得益于它便捷、易用的特性。在加装了Zero Quick Plug或microUSB/USB 转换头之后,将树莓派 Zero 和电脑连接起来。树莓派 Zero 即可配置成 USB/以太网设备,这时仅需要一个 USB 接口就实现给树莓派供电的同时将它接入因特网。不再需要携带额外的电源适配器、 USB HUB和..._usb以太网hub后,ifconig

python中power的用法_BI工具学习:在Power BI中运行Python并使用Python绘图-程序员宅基地

文章浏览阅读423次。之前的文章讲解了BI工具学习:手把手地教你用Power BI绘制数据分析图表,其实Power BI还支持Python,我们可以在Power BI中运行Python代码,而且还可以利用Python对Power BI中的数据进行可视化。说明:在Power BI中运行Python,需要先安装Python,关于如何安装Python,网上有无数的教程,这里就不写了。使用Power BI连接Python数据源..._power bi 中如何使用python

Transactional超时时间控制_@transactional添加超时时间-程序员宅基地

文章浏览阅读7.4k次。项目使用的是spring+mybatis+MySQL,今天,我需要把处理一个业务就是,当用户出金失败时,事务能够回滚,同时减少用户的等待时间,因为我发现当处理失败时,用户需要等上1分钟以上的时间,这是不合理的。那么经过一系列的调查发现:spring的事务超时(使用Java注解方式)和mysql InnoDB事务超时是相互关联的。在一个需要进行事务回滚的方法上加入@Trans_@transactional添加超时时间

关于--windows能ping通linux的ip,但是无法访问linux的tomcat首页 的解决办法_windows可以ping通linux服务器,但是打不开服务器的网页-程序员宅基地

文章浏览阅读6.6k次。CentOS版本:6.8Windows操作系统版本:Win10Linux上的tomcat版本:7.0.65linux是使用的NAT模式,及共享主机的IP地址。本来想使用windows本地访问linux上的tomcat首页,结果一直访问不成功;但在windows下能够ping通linux的ip,这很明显就是linux的端口没有开放,所以就在linux上设置了一下防火墙,将以下配置加入到了..._windows可以ping通linux服务器,但是打不开服务器的网页

Dbeaver一次执行多条MySQL语句报错_dbeaver执行多条语句报错-程序员宅基地

文章浏览阅读969次。选择驱动属性,将allowMultiQueries设置为TRUE,然后点击确定即可。解决方法,打开编辑选项。_dbeaver执行多条语句报错

炼丹记之国家电投2020风电机组异常数据识别与清洗 baseline f1=0.858分享_2020 ccf 大数据与计算智能大赛 风电机组异常数据识别与清洗-程序员宅基地

文章浏览阅读2.9k次,点赞5次,收藏15次。赛题地址:https://www.datafountain.cn/competitions/451赛题任务:依据提供的12台风力电机1年的10min间隔SCADA运行数据,包括时间戳信息、风速信息和功率信息等,利用机器学习相关技术,建立鲁棒的风电机组异常数据检测模型,用于识别并剔除潜在的异常数据,提高数据质量。此任务未给出异常数据标签,视为聚类任务,为引导选手向赛题需求对接,现简单阐述异常数据定义。异常数据是由风机运行过程与设计运行工况出现较大偏离时产生,如风速仪测风异常导致采集的功率散点明显_2020 ccf 大数据与计算智能大赛 风电机组异常数据识别与清洗