导入依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>juc_demo</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>15</maven.compiler.source>
<maven.compiler.target>15</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.10</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
</dependency>
</dependencies>
</project>
配置文件
<?xml version="1.0" encoding="UTF-8"?>
<configuration
xmlns="http://ch.qos.logback/xml/ns/logback"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://ch.qos.logback/xml/ns/logback logback.xsd">
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
<!-- %c 输出logger名称-->
<!-- %C 输出类名-->
<!-- %d{HH:mm:ss.SSS} 表示输出到毫秒的时间-->
<!-- %t 输出当前线程名称-->
<!-- %-5level 输出日志级别,-5表示左对齐并且固定输出5个字符,如果不足在右边补0-->
<!-- %logger 输出logger名称,因为Root Logger没有名称,所以没有输出-->
<!-- %msg 日志文本-->
<!-- %n 换行-->
<!-- 其他常用的占位符有:-->
<!-- %F 输出所在的类文件名,如Log4j2Test.java-->
<!-- %L 输出行号-->
<!-- %M或%method 输出所在方法名-->
<!-- %l 输出完整的错误位置, 包括类名、方法名、文件名、行数-->
<!-- %p 该条日志的优先级-->
<!-- replace(p ){r, t} p 为日志内容,r 是正则表达式,将p 中符合r 的内容替换为t 例如, "%replace(%msg){'\s', ''}"-->
<!-- caller{1}表示调用层次深度=》1表示调用层-->
<property name="CONSOLE_LOG_PATTERN" value="%highlight(%date{yyyy-MM-dd HH:mm:ss.SSS}) %boldYellow([%thread]) %highlight([%-5level]) %boldGreen(%caller{2}) %msg%n"/>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>utf8</charset>
</encoder>
</appender>
<logger name="c" level="debug" additivity="false">
<appender-ref ref="STDOUT"/>
</logger>
<root level="ERROR">
<appender-ref ref="STDOUT"/>
</root>
</configuration>
使用例子
@Slf4j(topic = "c")
public class CreateThread {
public static void main(String[] args) throws ExecutionException, InterruptedException {
/**
Runnable runnable = () -> log.debug("begin...");
Thread t1= new Thread(runnable, "t1");
log.debug("main");
t1.start();
*/
FutureTask<Integer> task= new FutureTask<>(()->{
log.debug("hello");
return 100;
});
new Thread(task,"task").start();
Integer result = task.get();
log.debug("结果是:{}",result);
}
}