【问题标题】:log4j logs to mysql tablelog4j 记录到 mysql 表
【发布时间】:2015-04-02 08:02:34
【问题描述】:

我想将日志插入日志表。和设置操作 log4j.properties :

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)

脚本有什么问题??

【问题讨论】:

  • 相同的配置在 Windows Server + MySQL+ LOG4j 上运行良好,而在 Centos 7 +MYSQL + LOG4J 上运行良好
  • 嗨,你可以试试用 %m 代替 %t

标签: java mysql logging jdbc


【解决方案1】:
  • 在 MYSQl 中检查用户的权限。

【讨论】:

    【解决方案2】:

    经过一番搜索,我在 Stackoverflow 中找到了另一个关于如何登录数据库的主题。它应该可以帮助您: Configuring log4j property file to store in mysql Database

    【讨论】:

      【解决方案3】:

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

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

      如果您使用 log4x.xml,请使用此行。我对 log4j.xml 有这个错误

      log4j:WARN 找不到记录器(包名)的附加程序。

      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
      

      【讨论】:

        猜你喜欢
        • 2017-09-25
        • 2018-07-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-08
        相关资源
        最近更新 更多