я получаю исключение Java SQL всякий раз, когда я пытаюсь запустить log4j2 с Appender JDBCSQL Exception с log4j2
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
мой путь к классам
$ echo $CLASSPATH
.:/home/user/minecraft/mysql-jdbc.5.1.23.jar
А вот содержимое конфигурации log4j2 XML файл Я использую
<?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. Есть ли какой-то шаг конфигурации, который мне не хватает?
Это было! В случае, если кому-то интересно, я начал его с 'java -Dlog4j.configurationFile = log4j2.xml -cp minecraft_server.1.7.2.jar: mysql-connector-java-5.1.23-bin.jar net.minecraft.server.MinecraftServer' – napentathol
Банки, указанные в -cp ... части команды _override_ глобального пути к классам. Таким образом, ваше приложение не может видеть ничего, что отсутствует в списке -cp. –