gpt4 book ai didi

java - JDBC-appender Log4j

转载 作者:行者123 更新时间:2023-12-04 06:48:26 25 4
gpt4 key购买 nike

重新思考的想法!

所以,我周末一直在想,不能放过这个。我决定重新尝试让 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(?);

最佳答案

只想确认一下;您不能使用 log4j 并使用 JDBCAppender 或 DBAppender?
( Log to a database using log4j )

编辑:

我的建议是使用一个命名的 appender 来登录数据库。

通过关闭可加性 ( log4j.additivity.database=false ),它不会将日志语句“推送”到根记录器,从而将该数据保留在默认日志文件/控制台之外。命名记录器可以通过 Logger.getLogger("database"); 检索来自源代码中的不同位置。

编辑2:

我认为最好让原来的问题成立,并提出一个新的问题,但在这里。 :)

appender 必须包含有关数据库连接的信息,或者作为对连接的引用:<param name="connector" value="name.of.existing.ConnectionHandler" />或指定 url , usernamepassword .

设置记录器,名称是获取记录器的重要部分。通过将 loggers additivity 设置为 fale,您可以阻止它将此日志记录添加到由 <root> 指定的默认记录器中。在配置中:

<appender name="JDBC" class="org.apache.log4j.jdbcplus.JDBCAppender">
[...]
</appender>
<logger name="myLogger" additivity="false">
<appender-ref ref="JDBC"/>
[...]
</logger>

现在您可以在 java 代码中引用记录器:
private static final Logger usageLog = Logger.getLog("myLogger");

从任何java文件。然后你像往常一样使用记录器,使用 usageLog.debug("Debug message");或者其他的东西。

编辑 3:

PatternLayout javaDoc在 ConversionPattern 中使用哪些标志。

关于java - JDBC-appender Log4j,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3467099/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com