# 日志 ***** ## 简单介绍 日志很简单。我没有使用任何外部(或者说是外人)的日志依赖。 在项目中,如果你想要输入一条日志在控制台,通过`QQLog`类的静态方法即可。 日志使用了**彩色控制台**依赖。 >[success] 这个**彩色控制台**也是由我开发的。依赖地址(不保证为最新版本): ```xml <!-- https://mvnrepository.com/artifact/io.gitee.ForteScarlet.plusutils/console-plus --> <dependency> <groupId>io.gitee.ForteScarlet.plusutils</groupId> <artifactId>console-plus</artifactId> <version>1.2</version> </dependency> ``` >[warning] 彩色控制台目前并没有文档,但是使用起来很简单。在没有文档的时候,如果你想了解可以直接联系我或者加入交流群联系群主。 >[danger] 彩色控制台有一些限制,例如在`Eclipse`中,似乎需要安装对应的插件(例如`ANSI Escape in Console`[ **此插件下载地址** ](https://download.csdn.net/download/leiyong0326/10112547) )才可以显示正常。 ## **日志拦截** 由于目前来讲,当前日志的本质实际上就只是单纯的控制台打印,所以假如你想要与Log4j等这样的日志框架相结合时比较困难的。 于是,我在核心的`1.2.3-BETA`版本之后,增加了一种日志拦截方案。 首先,你需要实现一个接口`QQLogBack` 这个接口只存在一个抽象方法,因此可以使用函数表达式进行实现。 ```java /** * 拦截QQLog日志的输出,当返回值为true的时候才会输出到控制台。 * @param msg 信息msg,可以直接String.valueOf() * @param level 日志级别 * @param e 如果存在异常,此为异常 ,否则为null * @return 是否输出此日志 */ boolean onLog(Object msg, LogLevel level, Throwable e); ``` 此处的msg为框架内部会输出的内容。(不包括输出前面的时间戳等信息,是指纯输出内容。) 当你实现完这个接口的时候,将你的实现类放入启动器的构造参数中即可。 >[info] 以下使用函数表达式和`HTTP API`组件进行示例。 ```java public static void main(String[] args) { //实现QQLogBack接口 QQLogBack qqLogBack = (m, l, e) -> { //控制台展示级别 + 信息 System.out.println(l + ":" + m); //返回false, 不输出日志 return false; }; //创建启动器实例的时候,将QQLogBack作为构造参数填入 HttpApplication httpApplication = new HttpApplication(qqLogBack); // 启动 httpApplication.run(new DemoRun()); } ``` 这样一来,假如你想要通过你自己的日志来输出而不是通过我的控制台打印,你便可以通过实现此接口来拦截所有的日志并通过自定义的日志输出,且返回值为false来抑制原版的输出。