NutzCN Logo
问答 尝试将 log4j 打印到 Nutz Boot ioc 管理的数据库里,导致循环引用
发布于 339天前 作者 shevawen 501 次浏览 复制 上一个帖子 下一个帖子
标签:

尝试将 log4j 打印到 Nutz Boot ioc 管理的数据库里,但会导致循环引用,因为ioc里也调用了 log() 方法,请问如何解决?

log4j.rootLogger=debug,Console,DB

log4j.appender.DB=io.gitee.overviewer.utils.LogDBPoolAppender
log4j.appender.DB.sql=INSERT INTO LOGS VALUES('%x','%d','%C','%p','%m')
log4j.appender.DB.layout=org.apache.log4j.PatternLayout
log4j.appender.DB.bufferSize=100
package io.gitee.overviewer.utils;

import java.sql.Connection;
import java.sql.SQLException;

import javax.sql.DataSource;

import org.apache.log4j.jdbc.JDBCAppender;
import org.nutz.boot.AppContext;
import org.nutz.dao.impl.NutDao;
import org.nutz.ioc.Ioc;

public class LogDBPoolAppender extends JDBCAppender {
	
	protected Connection getConnection() throws SQLException {
		AppContext ctx = AppContext.getDefault();
		Ioc ioc = ctx.ioc();
		NutDao dao = ioc.get(NutDao.class, "dao");
		DataSource ds = dao.getDataSource();
		return ds.getConnection();
		
	}
	
	protected void closeConnection(Connection con) {
		try {
			if(con != null)
				con.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

}

2 回复

单独配日志的数据库信息,不走ioc

@wendal 那就遇到了另一个问题.... 烦请兽总给看看 https://nutz.cn/yvr/t/qfkli660vqj00r5s2p6cps84i1

添加回复
请先登陆
回到顶部