gpt4 book ai didi

java - Java EE 中的 log4j postgres

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:27:06 25 4
gpt4 key购买 nike

经过多次搜索,我终于认为我的问题的解决方案是问你。

所以我的问题在于如何创建有关我的 Web 应用程序使用情况的日志。

我找到了 log4j java 库,但我不明白它是如何工作的。

我必须在哪里创建配置文件?

在哪里以及如何引用它?

我可以创建一个连接到 postgres 并插入日志我的三个参数的类吗?

这是我在网上找到的:

./src/log4j/log4j.properties

log4j.rootCategory = FATAL, CONSOLE
# definition de l'appender console
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern = %d [%t] %-5p %c - %m%n

# definition de l'appender JDBC
log4j.appender.JDBC=org.apache.log4j.jdbcplus.JDBCAppender
log4j.appender.JDBC.layout=org.apache.log4j.PatternLayout
# appender pour base postgresql
log4j.appender.JDBC.dbclass=org.postgresql.Driver
# parametres de la base
log4j.appender.JDBC.url=jdbc:postgresql://127.0.0.1:5432/baseSQL
log4j.appender.JDBC.username=user
log4j.appender.JDBC.password=password
# requete sql qui decoupe le message suivant les barres verticales et fait l'insert dans la table
log4j.appender.JDBC.sql=INSERT INTO logs (id, user, info1, info2, timestamp) VALUES (nextval('sequence_logs'), split_part('@MSG@','|',1), split_part('@MSG@','|',2), split_part('@MSG@','|',3), '@TIMESTAMP@')

#declaration des loggers de l'application
log4j.logger.paquetage.de.mon.appli=FATAL, CONSOLE
log4j.logger.loggerDB=INFO,JDBC
# definition de non additivite des loggers
log4j.additivity.loggerDB=false

src/log4j/LogsInfos.java

package log4j;

import org.apache.log4j.Logger;

public final class LogsInfos {

/** Declaration du Logger DB. */
private static Logger loggerDB = Logger.getLogger("loggerDB");

/**
* Enregistre le log.
* @param param parametres du log
*/
public static void enregistreLog(String user, String action, String sujet) {
// Date date=new Date();
if (loggerDB.isInfoEnabled()) {
// creation du message final
final String log = new StringBuffer(user).append(action).append(sujet).toString();
// envoi du log au logger base
loggerDB.info(log);
}
}
}

我包里的调用

LogsInfos.enregistreLog((String)session.getAttribute("cn"),"Suppression",personne.getCn());

我可以使用我选择的对象吗?

这段代码是解决方案?如果是,我必须在哪里调用配置文件?

编辑:这是执行时的控制台错误消息:

log4j:ERROR Could not instantiate class [org.apache.log4j.jdbcplus.JDBCAppender].
java.lang.ClassNotFoundException: org.apache.log4j.jdbcplus.JDBCAppender
...
log4j:ERROR Could not instantiate appender named "JDBC".
log4j:WARN No appenders could be found for logger (loggerDB).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

最佳答案

您的类路径中缺少 jdbcappender.jar。我想你正在寻找 this one .或者你可以使用 official JDBCAppender ,但我不确定它的功能是否足以满足您的需求。

Where I have to create configuration file ?

大多数人创建它 at the application root ,但我相信您的阅读效果很好。

Where and how to make reference on it?

你真的不需要,如果配置文件和库在类路径中,你只需要一个 Logger 实例。

Can I create a class that connect to postgres and insertin log my three parameters?

是的。你在正确的轨道上。只需将所需的 jar 放在类路径中,并确保您的 log4j.appender.JDBC.sql 行有效。您将使用 Logger 类方法,它会为您处理一切。

干杯,

关于java - Java EE 中的 log4j postgres,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5950119/

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