log4j postgres в Java EE
после многих поисков по этому вопросу я, наконец, думаю, что решение моей проблемы-спросить вас.
таким образом, моя проблема заключается в создании журналов в моем использовании веб-приложения.
Я нашел библиотеку log4j java, но я не понимаю, как это работает..
где я должен создать файл конфигурации ?
где и как сделать ссылку на него?
могу ли я создать класс, который подключается к postgres и insertin log my three параметры?
вот что я нашел в сети :
./ГРЦ/к log4j/к log4j.свойства
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.
1 ответов
вам не хватает jdbcappender.Jar в ваш classpath. Я думаю, вы ищете этот. Или вы можете пойти с официальный JDBCAppender, но я не уверен, что это мощный достаточно для ваших нужд.
где я должен создать файл конфигурации ?
большинство людей создают его в корне приложения, но я уверен, что ваш читается просто отлично.
где и как сделать ссылка на него?
вам действительно не нужно, если файл конфигурации и библиотеки находятся в пути к классам, все, что вам нужно, это экземпляр Logger.
могу ли я создать класс, который подключается к postgres и вставляет в журнал мои три параметра?
да. Вы на правильном пути. Просто поместите необходимые банки в путь к классам и убедитесь, что ваш log4j.appender.JDBC.sql
линия работает. Вы будете использовать методы класса Logger, которые позаботятся обо всем для тебя.
спасибо,