log4j 日志输出数据库
一:添加依赖jar
1 2 3 4 5 6 7 8 9 10 11 | <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version> 1.2 . 17 </version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version> 6.0 . 6 </version> </dependency> |
二:配置log4j
1 2 3 4 5 6 7 8 | log4j.rootLogger = stdout,jdbc log4j.appender.jdbc=org.apache.log4j.jdbc.JDBCAppender log4j.appender.jdbc.driver=com.mysql.jdbc.Driver log4j.appender.jdbc.URL=jdbc:mysql: //127.0.0.1:3306/test?characterEncoding=utf8&useSSL=true&serverTimezone=UTC log4j.appender.jdbc.user=root log4j.appender.jdbc.password= log4j.appender.jdbc.sql=insert into log_info(level,category,thread,time,location,note) values( '%p' , '%c' , '%t' , '%d{yyyy-MM-dd HH:mm:ss:SSS}' , '%l' , '%m' ) |
三:创建数据库表结构
@Test public void jdbcCreateTable() throws Exception { Connection connection=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8&useSSL=true&serverTimezone=UTC", "root", ""); Class.forName("com.mysql.cj.jdbc.Driver"); connection.createStatement().execute("CREATE TABLE `log_info` ( " + " `Id` int(11) NOT NULL AUTO_INCREMENT, " + " `level` varchar(255) NOT NULL DEFAULT '' COMMENT '优先级', " + " `category` varchar(255) NOT NULL DEFAULT '' COMMENT '类目', " + " `thread` varchar(255) NOT NULL DEFAULT '' COMMENT '进程', " + " `time` varchar(30) NOT NULL DEFAULT '' COMMENT '时间', " + " `location` varchar(255) NOT NULL DEFAULT '' COMMENT '位置', " + " `note` text COMMENT '日志信息', " + " PRIMARY KEY (`Id`) " + ")"); }
四:添加测试代码
/*** * * @author zhanchaohan * */ public class PrintTest { private static Logger logger = Logger.getLogger(PrintTest.class); public static void main(String[] args) throws Exception { PropertyConfigurator.configure(PrintTest.class.getResource("/log4j.properties")); logger.info("普通Info信息"); logger.debug("调试debug信息"); logger.error("报错error信息"); logger.warn("警告warn信息"); logger.fatal("严重错误fatal信息"); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)