配置log4j属性文件以存储在mysql数据库中

我开始使用log4j已经有一段时间了; 非常酷的日志框架。 我做过其他类型的日志记录,如控制台和文件记录。 因此尝试使用mysql进行数据库日志记录的数据库适配器。 因此,我创建了以下名为log4j.properties的属性文件 –

# 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:3306/test # 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= # Set the SQL statement to be executed. log4j.appender.DB.sql=insert into log(date,level,message) values("%d","%p","%m") # Define the layout for file appender log4j.appender.DB.layout=org.apache.log4j.PatternLayout 

并以下列方式在测试类中使用它 –

  public class DBLoggerTest { static Logger logger; public DBLoggerTest() { //System.setProperty("log4j.configuration", "log4j.properties"); logger = Logger.getLogger(DBLoggerTest.class.getName()); } public static void main(String[] args) { new DBLoggerTest(); logger.info("This is a test info"); logger.error("This is an error messsage"); } } 

但我得到以下错误 –

 log4j:WARN No appenders could be found for logger (com.satyam.logger.test.DBLoggerTest). log4j:WARN Please initialize the log4j system properly. log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info. 

请帮忙……?

如果你使用的是mysql。 创建一个log4j.properties文件。 这对我有用。 把它放在你的应用程序的根文件夹中。 即所有包的根。 我也有一个包含字段id,日期,用户,消息和类的表日志。

 log4j.rootLogger=DEBUG,DB log4j.appender.DB=org.apache.log4j.jdbc.JDBCAppender log4j.appender.DB.URL=jdbc:mysql://localhost:3306/test log4j.appender.DB.user=root log4j.appender.DB.password=root log4j.appender.DB.sql=INSERT INTO logs(date, user, message,class) VALUES ('%d{yyyy-MM-dd HH:mm:ss}', '%X{User}','%m','%c') log4j.appender.DB.layout=org.apache.log4j.PatternLayout log4j.appender.CA.layout.ConversionPattern=INSERT INTO logs (date, user,message,class) VALUES ('%d{yyyy-MM-dd HH:mm:ss}', '%X{User}','%m','%c') log4j.category.ke.co=ERROR log4j.category.ke.co.appender-ref=DB 

然后按如下方式使用它。

 package com.zeddarn; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import org.apache.log4j.Logger; import org.apache.log4j.MDC; public class MySQLDatabaseConnector { static ThreadLocal connection = new ThreadLocal(); private static Logger logger = Logger.getLogger(MySQLDatabaseConnector.class); public static Connection getDBConnection() { //check if a mysql connection already exits. This is to avoid reconnecting if (connection.get() == null) { try { //loading the mysql driver. This means you also have to add mysql libary. You can add manually or via maven Class.forName("com.mysql.jdbc.Driver"); } catch (ClassNotFoundException e) { //do something to deal with the error of missing mysql driver eg notification to the user. MDC.put("User", "loggeduser"); logger.error(e.getMessage()); MDC.getContext().clear(); } try { connection.set(DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "root")); } catch (SQLException e) { MDC.put("User", "loggeduser"); logger.error(e.getMessage()); MDC.getContext().clear(); } } return connection.get(); } public static void main(String args[]) { MDC.put("User", "loggeduser"); logger.error("message from exception.getMessage() method"); MDC.getContext().clear(); } 

}