Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 带有log4j2的SQL异常_Java_Mysql_Logging_Jdbc_Log4j2 - Fatal编程技术网

Java 带有log4j2的SQL异常

Java 带有log4j2的SQL异常,java,mysql,logging,jdbc,log4j2,Java,Mysql,Logging,Jdbc,Log4j2,每当我尝试使用JDBC appender运行log4j2时,都会出现java sql异常 2013-12-03 22:07:32,610 ERROR No matching driver found for database URL [jdbc:mysql://localhost:3306/minecraft]. java.sql.SQLException: No suitable driver at java.sql.DriverManager.getDriver(Driver

每当我尝试使用JDBC appender运行log4j2时,都会出现java sql异常

2013-12-03 22:07:32,610 ERROR No matching driver found for database URL [jdbc:mysql://localhost:3306/minecraft]. java.sql.SQLException: No suitable driver
        at java.sql.DriverManager.getDriver(DriverManager.java:278)
        at org.apache.logging.log4j.core.appender.db.jdbc.DriverManagerConnectionSource.createConnectionSource(DriverManagerConnectionSource.java:88)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.apache.logging.log4j.core.config.BaseConfiguration.createPluginObject(BaseConfiguration.java:841)
        at org.apache.logging.log4j.core.config.BaseConfiguration.createConfiguration(BaseConfiguration.java:595)
        at org.apache.logging.log4j.core.config.BaseConfiguration.createConfiguration(BaseConfiguration.java:587)
        at org.apache.logging.log4j.core.config.BaseConfiguration.createConfiguration(BaseConfiguration.java:587)
        at org.apache.logging.log4j.core.config.BaseConfiguration.doConfigure(BaseConfiguration.java:244)
        at org.apache.logging.log4j.core.config.BaseConfiguration.start(BaseConfiguration.java:142)
        at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:339)
        at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:378)
        at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:149)
        at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:85)
        at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:34)
        at org.apache.logging.log4j.LogManager.getLogger(LogManager.java:387)
        at org.apache.logging.log4j.LogManager.getLogger(LogManager.java:322)
        at net.minecraft.server.MinecraftServer.<clinit>(SourceFile:47)

2013-12-03 22:07:32,617 ERROR Unable to invoke method createAppender in class org.apache.logging.log4j.core.appender.db.jdbc.JDBCAppender for element JDBC java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.apache.logging.log4j.core.config.BaseConfiguration.createPluginObject(BaseConfiguration.java:841)
        at org.apache.logging.log4j.core.config.BaseConfiguration.createConfiguration(BaseConfiguration.java:595)
        at org.apache.logging.log4j.core.config.BaseConfiguration.createConfiguration(BaseConfiguration.java:587)
        at org.apache.logging.log4j.core.config.BaseConfiguration.doConfigure(BaseConfiguration.java:244)
        at org.apache.logging.log4j.core.config.BaseConfiguration.start(BaseConfiguration.java:142)
        at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:339)
        at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:378)
        at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:149)
        at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:85)
        at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:34)
        at org.apache.logging.log4j.LogManager.getLogger(LogManager.java:387)
        at org.apache.logging.log4j.LogManager.getLogger(LogManager.java:322)
        at net.minecraft.server.MinecraftServer.<clinit>(SourceFile:47)
Caused by: java.lang.NullPointerException
        at org.apache.logging.log4j.core.appender.db.jdbc.JDBCAppender.createAppender(JDBCAppender.java:80)
        ... 17 more

2013-12-03 22:07:32,619 ERROR Null object returned for JDBC in Appenders
2013-12-03 22:07:32,625 ERROR Unable to locate appender databaseAppender for logger
下面是我正在使用的log4j2xml配置文件的内容

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
        <Appenders>

                <Console name="console" target="SYSTEM_OUT">
                        <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} [%level] %msg%n" />
                </Console>

                <RollingFile name="rolling_server_log" fileName="logs/server.log"
                                filePattern="logs/server_%d{yyyy-MM-dd}-%i.log.gz">
                        <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} [%level] %msg%n" />
                        <Policies>
                                <TimeBasedTriggeringPolicy />
                        </Policies>
                </RollingFile>

                <JDBC name="databaseAppender" tableName="minecraft">
                        <DriverManager url="jdbc:mysql://localhost:3306/minecraft" username="xxxx" password="xxxx" />
                        <Column name="eventDate" isEventTimestamp="true" />
                        <Column name="level" pattern="%level" />
                        <Column name="logger" pattern="%logger" />
                        <Column name="message" pattern="%message" />
                </JDBC>

        </Appenders>
        <Loggers>
                <Root level="info">
                        <AppenderRef ref="rolling_server_log" />
                        <AppenderRef ref="console" />
                        <AppenderRef ref="databaseAppender"/>
                </Root>
        </Loggers>
</Configuration>


我对JDBC安装/log4j2集成非常陌生。我是否缺少一些配置步骤

您的
类路径中有一个错误

CLASSPATH变量是通知应用程序的一种方法,包括 JDK工具,在其中查找用户类


因此,您的
类路径
只能是
/home/user/minecraft/
。只需确保驱动程序jar位于该目录中。

看起来像是类路径问题。假设启动应用程序的命令类似于“java-cpjar1.jar:jar2.jar:jar3.jarmymainclass”,您是否尝试过将jdbc驱动程序类包括在jar列表中

成功了!如果有人怀疑我是从
java-Dlog4j.configurationFile=log4j2.xml-cp minecraft_server.1.7.2.jar:mysql-connector-java-5.1.23-bin.jar net.minecraft.server.MinecraftServer
在-cp中指定的jar开始的。。。命令的一部分重写全局类路径。因此,您的应用程序无法看到任何不在-cp列表中的内容。
<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
        <Appenders>

                <Console name="console" target="SYSTEM_OUT">
                        <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} [%level] %msg%n" />
                </Console>

                <RollingFile name="rolling_server_log" fileName="logs/server.log"
                                filePattern="logs/server_%d{yyyy-MM-dd}-%i.log.gz">
                        <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} [%level] %msg%n" />
                        <Policies>
                                <TimeBasedTriggeringPolicy />
                        </Policies>
                </RollingFile>

                <JDBC name="databaseAppender" tableName="minecraft">
                        <DriverManager url="jdbc:mysql://localhost:3306/minecraft" username="xxxx" password="xxxx" />
                        <Column name="eventDate" isEventTimestamp="true" />
                        <Column name="level" pattern="%level" />
                        <Column name="logger" pattern="%logger" />
                        <Column name="message" pattern="%message" />
                </JDBC>

        </Appenders>
        <Loggers>
                <Root level="info">
                        <AppenderRef ref="rolling_server_log" />
                        <AppenderRef ref="console" />
                        <AppenderRef ref="databaseAppender"/>
                </Root>
        </Loggers>
</Configuration>