주제에 대한 많은 조사를 마친 후에 마침내 내 문제의 해결책이 당신에게 물어볼 것이라고 생각합니다.Java EE의 log4j postgres
제 웹 응용 프로그램 사용률에 대한 로그를 만드는 데 문제가 있습니다.
내가 log4j에 자바 라이브러리를 발견하지만 난 그 작동 방식을 이해하지 않습니다 ..
내가 구성 파일을 생성해야?
어디에서 어떻게 참조 할 수 있습니까?
postgres에 연결하는 클래스를 만들고 세 개의 매개 변수를 insertin 할 수 있습니까? 여기
내가 그물에 발견하는 내용입니다 :./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('@[email protected]','|',1), split_part('@[email protected]','|',2), split_part('@[email protected]','|',3), '@[email protected]')
#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.
두 가지 다른 질문을 보았습니다. 구성 SQL 행이 작동하려면 매개 변수를 파이프 ("|")로 분리해야한다고 생각합니다. 그리고 StringBuffer를 더 빠른 StringBuilder로 대체하는 것이 안전하다고 생각합니다. (이 코드가 어떻게 든 다중 스레드되지 않는 한) –
'내가 선택한 객체를 사용할 수 있습니까? ' 네,하지만 StringBuffer로 보내기 때문에, 그것들은 toString() 메서드를 올바르게 오버라이드 (override)한다. 그렇지 않으면, 결과가 예상 한 것과 다를 가능성이있다. 아니면 내가 너를 잘못 해석 한 것일 수도있어. –