java - log4j 未初始化 JDBC 驱动程序
问题描述
尝试使用 log4j 登录到 MS SQL 服务器:
import org.apache.log4j.Logger;
public class MailTest {
private static Logger lg = Logger.getLogger(MailTest.class);
public static void main(String[] args) {
MailTest test = new MailTest();
try {
lg.info("hello");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
有异常:
log4j:ERROR Failed to excute sql
java.sql.SQLException: No suitable driver found for "jdbc:sqlserver://localhost:1433;databaseName=ERP_IDMS"
at java.sql.DriverManager.getConnection(DriverManager.java:689)
at java.sql.DriverManager.getConnection(DriverManager.java:247)
at org.apache.log4j.jdbc.JDBCAppender.getConnection(JDBCAppender.java:251)
at org.apache.log4j.jdbc.JDBCAppender.execute(JDBCAppender.java:215)
at org.apache.log4j.jdbc.JDBCAppender.flushBuffer(JDBCAppender.java:289)
at org.apache.log4j.jdbc.JDBCAppender.append(JDBCAppender.java:186)
at org.apache.log4j.AppenderSkeleton.doAppend(AppenderSkeleton.java:251)
at org.apache.log4j.helpers.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:66)
at org.apache.log4j.Category.callAppenders(Category.java:206)
at org.apache.log4j.Category.forcedLog(Category.java:391)
at org.apache.log4j.Category.info(Category.java:666)
at tst.MailTest.main(MailTest.java:35)
d{yyyy-MM-dd HH:mm:ss} INFO MailTest:35 - hello
log4j.properties:
# Define the root logger with file appender
log4j.rootLogger = debug, sql, stdout
#log4j.rootLogger = error, sql, stdout
# Log for the Hibernate
log4j.logger.org.hibernate=ERROR
#log4j.logger.org.hibernate=INFO
#log4j.logger.org.hibernate.type=trace
#log4j.logger.org.hibernate.type=ALL
# ================ Added as part of logging into DB ====================
# Define the jdbc appender
log4j.appender.sql=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.sql.URL="jdbc:sqlserver://localhost:1433;databaseName=ERP_IDMS"
# Set Database Driver
log4j.appender.sql.driver=com.microsoft.sqlserver.jdbc.SQLServerDriver
# Set database user name and password
log4j.appender.sql.user=sa
log4j.appender.sql.password=sa
# Set the SQL statement to be executed.
#short
log4j.appender.sql.layout.ConversionPattern=INSERT INTO LOGS1 VALUES ('%d{yyyy-MM-dd HH:mm:ss.SSS}' ,'%C','%p','%m', '%throwable{short}', '%throwable{800}')
# Define the xml layout for file appender
log4j.appender.sql.layout=org.apache.log4j.EnhancedPatternLayout
#=======================================================================
# Direct to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
# =============================================================================
我在互联网上看到很多关于 JDBC 未初始化的报告。但是如何在 log4j 中做到这一点?如何修复此错误?
解决方案
您的类路径中有 SQL Server JDBC 驱动程序吗?如果没有,请参阅文章以获取指导:使用 JDBC 驱动程序
推荐阅读
- delphi - Delphi TQuery 结果集 - 如何避免将 RequestLive 设置为 true 的警告
- arrays - Kotlin Int 到字节的转换
- arrays - 元子中的空条件?
- amazon-web-services - 以非 root 用户身份在脚本中从 AWS ECR 获取 Docker 容器
- c++ - 我可以像这样在 C++ 中转换:int ('a') 吗?
- c# - 如何进行单元测试 - 压缩文件
- regex - 如何删除带有文本的括号和字符串末尾的一些文本
- hana - 为什么增量加载会向 HANA 插入重复记录?
- c# - 控制台光标前的 Cosmos C# 文本
- gitops - 如何将 UI 和核心原理配置作为代码使用?