java JDBCappender Log4j
重新思考这个想法
所以,我周末一直在想,不能放过这一次。我决定重新尝试让log4j工作的想法
我一直在做一些编码,我想我已经成功了。除此之外,我真的不明白如何插入到记录器中。我创建了一个JDBC appender,SQL如下所示:
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="INSERT INTO audit (timestamp, user, operation, source, resourceRange, additionalInfo) VALUES ('%d{yyyy-MM-dd H:mm:s,SSS}','%m', '%m', '%m', '%m', '%m')"
/>
</layout>
对吗?所有值都具有VARCHAR数据类型
但是,我真正的问题是如何在Java代码中记录这一点
无法真正理解要插入哪些值才能获得插入数据库的正确值
logger.log(?);
# 1 楼答案
LogBack提供现成的logging to a database
# 2 楼答案
只是为了确保;不能使用log4j和jdbcapender或DBAppender吗? (Log to a database using log4j)
编辑:
我的建议是使用一个命名的appender来登录数据库
通过关闭additivity(
log4j.additivity.database=false
),它不会将日志语句“推送”到根日志记录器,从而将该数据保留在默认日志文件/控制台之外。可以通过Logger.getLogger("database");
从源代码中的不同位置检索命名的记录器编辑2:
我认为最好还是保留原来的问题,再问一个新的问题,但问题来了。:)
appender必须包含有关数据库连接的信息,作为对连接的引用:
<param name="connector" value="name.of.existing.ConnectionHandler" />
,或者通过指定url
、username
和password
设置记录器时,名称是获取记录器的重要部分。通过将loggers additivity设置为fale,可以阻止它将此日志添加到配置中由
<root>
指定的默认日志中:现在,您可以使用以下代码在java代码中引用记录器:
从任何java文件。然后像往常一样使用记录器,使用
usageLog.debug("Debug message");
或其他东西编辑3:
请参阅PatternLayout javaDoc,了解在转换模式中使用哪些标志