Conectarse a una base de datos utilizando log4j
Pregunta
Dado que en log4j javadoc es
ADVERTENCIA: Esta versión de JDBCAppender es muy probable que sea reemplazado por completo en el futuro. Moreoever, que no registra excepciones.
¿Qué debo hacer para conectarse a una base de datos?
Solución
Si usted está buscando un appender base de datos que no sólo funciona, sino que también es compatible con la agrupación de conexiones, se mantiene y debidamente documentado, que cuenta logback de DBAppender .
Irónicamente, la advertencia en los javadocs sobre la eliminación de JDBCAppender en futuras versiones de log4j fue escrito por mí.
Otros consejos
Puede utilizar un appender alternativa, pero realmente Log4J 1.2 va a ser alrededor y estándar por mucho tiempo. Desarrollaron DBAppender como parte de sus compañeros receptores, que no se libere oficialmente, pero se puede descargar el código fuente y obtener su propio ir también.
A menos que la cuestión de las excepciones no madereras le molesta, JDBCAppender está muy bien. Cualquier actualización a 2.0 va a ser más radical que simplemente cambiar JDBCAppender (si sucede 2.0), por lo que no habría que preocuparse de usar, a pesar de la advertencia. Que claramente no tienen una hoja de ruta sólida o línea de tiempo para la introducción de una nueva versión, y 1.2.15 fue puesto en libertad en 2007.
**log4j.properties file**
# Define the root logger with appender file
log4j.rootLogger = DEBUG, DB
# Define the DB appender
log4j.appender.DB=org.apache.log4j.jdbc.JDBCAppender
# Set JDBC URL
log4j.appender.DB.URL=jdbc:mysql://localhost/log
# Set Database Driver
log4j.appender.DB.driver=com.mysql.jdbc.Driver
# Set database user name and password
log4j.appender.DB.user=root
log4j.appender.DB.password=root
# Set the SQL statement to be executed.
log4j.appender.DB.sql=INSERT INTO actionlg(user_id, dated, logger, level, message) values('%X{userId}',' %d{yyyy-MM-dd-HH-mm}','%C','%p','%m')
# Define the layout for file appender
log4j.appender.DB.layout=org.apache.log4j.PatternLayout
**Java Class**
Log4jExamples.java
import java.sql.*;
import java.io.*;
import org.apache.log4j.Logger;
import org.apache.log4j.MDC;
public class Log4jExample {
/* Get actual class name to be printed on */
static Logger log = Logger.getLogger(Log4jExample.class.getName());
public static void main(String[] args)throws IOException,SQLException{
log.error("Error");
MDC.put("userId", "1234");
}
}
**libs required**
- mysql-connector-java-3.1.8-bin.jar
- log4j-1.2.17.jar