2015-04-02 63 views
0

我想将日志插入到日志表中。和设定运算log4j.properties:log4j日志到mysql表

log4j.rootLogger = DEBUG, DB 
log4j.appender.DB=org.apache.log4j.jdbc.JDBCAppender 
log4j.appender.DB.URL=jdbc:mysql://localhost/test 
log4j.appender.DB.driver=com.mysql.jdbc.Driver 
log4j.appender.DB.user=admin 
log4j.appender.DB.password=admin 
log4j.appender.DB.sql=INSERT INTO logs_2 (log) VALUES('%t') 
log4j.appender.DB.layout=org.apache.log4j.PatternLayout 

和我也曾尝试

INSERT INTO logs_2 (log) VALUES(''%t'') 
INSERT INTO logs_2 (log) VALUES('this is an example log ') 
INSERT INTO 'logs_2' (log) VALUES('this is an example log') 

表定义:

CREATE TABLE `logs_2` (
    `id` int(6) unsigned NOT NULL AUTO_INCREMENT, 
    `log` varchar(200) DEFAULT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB 

DEFAULT CHARSET=utf8 | 

和结果:MySQL的> ....命令行...

MariaDB [test]> select * from logs_2; 
Empty set (0.00 sec) 

scrip有什么问题PT?

+0

相同的配置工作WEL的Windows Server + MYSQL + Log4j和对未在CentOS 7 + MYSQL + LOG4J – ASA 2015-04-07 10:22:37

+0

嗨,也许你可以尝试使用%m代替%t – lookfire 2015-04-13 11:55:07

回答

0
  • 检查用户在MYSQl中的权限。
0

请检查您的log4j.properties文件路径

PropertyConfigurator.configure("src/main/resources/log4j.properties"); 

如果您使用log4x.xml使用这条线。我有这个错误log4j.xml

log4j:警告没有appender可以发现记录器(包名)。

log4j:WARN请正确初始化log4j系统。

log4j:WARN有关更多信息,请参见http://logging.apache.org/log4j/1.2/faq.html#noconfig

DOMConfigurator.configure("src/main/resources/log4j.xml"); 

创建表

CREATE TABLE LOGS 
    (USER_ID VARCHAR(30) NOT NULL, 
    LOG_DATE DATE   NOT NULL, 
    LOGGER VARCHAR(45) NOT NULL, 
    LEVEL VARCHAR(12) NOT NULL, 
    MESSAGE VARCHAR(1000) NOT NULL 
    ); 

    import org.apache.log4j.Logger; 
    import org.apache.log4j.PropertyConfigurator; 

    public class TestMain { 
     static Logger log = Logger.getLogger(TestMain.class); 
     public static void main(String[] args) { 
      PropertyConfigurator.configure("src/main/resources/log4j.properties"); 
      log.debug("Test debug"); 
      log.info("Test info"); 
     } 
    } 

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/TestDatabaseName 

# Set Database Driver 
log4j.appender.DB.driver=com.mysql.jdbc.Driver 

# Set database user name and password 
log4j.appender.DB.user=myuser 
log4j.appender.DB.password=mypassword 

# Set the SQL statement to be executed. 
log4j.appender.DB.sql=INSERT INTO LOGS(USER_ID,LOG_DATE,LOGGER, LEVEL, MESSAGE) VALUES('%x',now(),'%C','%p','%m') 

# Define the layout for file appender 
log4j.appender.DB.layout=org.apache.log4j.PatternLayout