目录
一、应用示例
二、注解@Slf4j
三、将日志保存至数据库
slf4j是外观模式的典型应用。slf4j只是一个日志标准,并不是日志系统的具体实现。slf4j能够提供日志接口,提供获取具体日志对象的方法。
slf4j-simple、logback都是slf4j的具体实现,log4j虽然不直接实现slf4j,但是有专门的一层桥接slf4j-log412来实现slf4j。
一、应用示例
1、引入依赖
junit
junit
4.13-beta-3
org.slf4j
slf4j-api
1.7.30
slf4j-simple、logback应用比较简单,不需要配置,log4j需要进行配置。
ch.qos.logback
logback-classic
1.2.3
org.slf4j
slf4j-simple
2.0.0-alpha1
2、测试
@Test
public void test(){
Logger logger = LoggerFactory.getLogger(Object.class);
logger.info("123");
}
打印出:
[main] INFO java.lang.Object - 123
二、注解@Slf4j
使用注解,不需要每次都生成Logger对象。
1、安装lombok依赖
可以在线安装,File->Settings->Plugins->Marketplace,搜索安装即可。下图是已经安装了。
也可以去IDEA的插件网下载。下载后将其解压放到IDEA安装文件的plugins目录下,比如:C: \IntelliJ IDEA 2020.1\plugins,重启IDEA。
2、引入lombok依赖
org.projectlombok
lombok
1.16.20
3、使用log进行日志打印
@Slf4j
public class Slf4jTest {
@Test
public void test(){
log.info("123");
}
}
打印出:
[main] INFO com.laosun.test.Slf4jTest – 123
三、将日志保存至数据库
1、添加依赖
ch.qos.logback
logback-core
1.2.3
mysql
mysql-connector-java
5.1.45
com.mchange
c3p0
0.9.5.4
2、创建数据库logback_test,以及三个表logging_event_property, logging_event_exception, logging_event:
建表的SQL语句在图中位置可以找到
CREATE DATABASE logback_test;
USE logback_test;
BEGIN;
DROP TABLE IF EXISTS logging_event_property;
DROP TABLE IF EXISTS logging_event_exception;
DROP TABLE IF EXISTS logging_event;
COMMIT;
BEGIN;
CREATE TABLE logging_event
(
timestmp BIGINT NOT NULL,
formatted_message TEXT NOT NULL,
logger_name VARCHAR(254) NOT NULL,
level_string VARCHAR(254) NOT NULL,
thread_name VARCHAR(254),
reference_flag SMALLINT,
arg0 VARCHAR(254),
arg1 VARCHAR(254),
arg2 VARCHAR(254),
arg3 VARCHAR(254),
caller_filename VARCHAR(254) NOT NULL,
caller_class VARCHAR(254) NOT NULL,
caller_method VARCHAR(254) NOT NULL,
caller_line CHAR(4) NOT NULL,
event_id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY
);
COMMIT;
BEGIN;
CREATE TABLE logging_event_property
(
event_id BIGINT NOT NULL,
mapped_key VARCHAR(254) NOT NULL,
mapped_value TEXT,
PRIMARY KEY(event_id, mapped_key),
FOREIGN KEY (event_id) REFERENCES logging_event(event_id)
);
COMMIT;
BEGIN;
CREATE TABLE logging_event_exception
(
event_id BIGINT NOT NULL,
i SMALLINT NOT NULL,
trace_line VARCHAR(254) NOT NULL,
PRIMARY KEY(event_id, i),
FOREIGN KEY (event_id) REFERENCES logging_event(event_id)
);
COMMIT;
3、在src/main/resources目录下创建logback.xml和mchange-log.properties。
logback.xml
%d{HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n
com.mysql.cj.jdbc.Driver
jdbc:mysql://127.0.0.1:3306/logback_test
root
123
mchange-log.properties
com.mchange.v2.log.MLog=com.mchange.v2.log.FallbackMLog
com.mchange.v2.log.FallbackMLog.DEFAULT_CUTOFF_LEVEL=OFF
4、测试
@Slf4j
public class Slf4jTest {
@Test
public void test(){
log.info("123");
log.debug("456");
}
}