如何在运行时设置 log4j 的 DB Credentials
How to set the DB Credentials of log4j at runtime
这是我的 log4j 属性文件。我正在将日志写入数据库。我想在 运行 时间
设置数据库凭据
log4j.appender.DB=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.DB.URL=jdbc:sqlserver://172.16.0.201:1433;databaseName=databaseone;autoReconnect=true
log4j.appender.DB.driver=com.microsoft.sqlserver.jdbc.SQLServerDriver
log4j.appender.DB.user=username
log4j.appender.DB.password=password3
log4j.appender.DB.sql=INSERT INTO usage_fact(accessed_date,accessed_item_id,user_id,tenant_id,log_level) VALUES('%d{yyyy-MM-dd HH:mm:ss}','%X{accessed_item_id}','%X{user_id}','%X{tenant_id}','%p')
log4j.appender.DB.layout=org.apache.log4j.PatternLayout
当 log4j 连接到数据库或写入 table 时,我如何捕获 sql 异常。所有异常堆栈跟踪都在控制台上打印我不想在控制台上打印它。
您可以通过 java 代码初始化日志框架,如下所示:
public class CoreLogger {
public static Logger getLogger(final Class moduleName) {
Logger logger = Logger.getLogger(moduleName);
Properties prop = new Properties();
try {
prop.load(new FileReader("log4j.properties"));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
prop.put("log4j.appender.DB.user", "root");
prop.put("log4j.appender.DB.password", "root");
PropertyConfigurator.configure(prop);
return logger;
}
}
并使用
static Logger log = CoreLogger.getLogger(Demo.class);
在您的 类 中获取记录器实例,这样您就可以在 运行 时设置凭据。
关于捕获文件中的错误,您可以将 stdout
和 stderr
重定向到您的日志文件,请参阅 Dario's
在 log4j redirect stdout to DailyRollingFileAppender 的回答以了解更多详细信息。
这是我的 log4j 属性文件。我正在将日志写入数据库。我想在 运行 时间
设置数据库凭据log4j.appender.DB=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.DB.URL=jdbc:sqlserver://172.16.0.201:1433;databaseName=databaseone;autoReconnect=true
log4j.appender.DB.driver=com.microsoft.sqlserver.jdbc.SQLServerDriver
log4j.appender.DB.user=username
log4j.appender.DB.password=password3
log4j.appender.DB.sql=INSERT INTO usage_fact(accessed_date,accessed_item_id,user_id,tenant_id,log_level) VALUES('%d{yyyy-MM-dd HH:mm:ss}','%X{accessed_item_id}','%X{user_id}','%X{tenant_id}','%p')
log4j.appender.DB.layout=org.apache.log4j.PatternLayout
当 log4j 连接到数据库或写入 table 时,我如何捕获 sql 异常。所有异常堆栈跟踪都在控制台上打印我不想在控制台上打印它。
您可以通过 java 代码初始化日志框架,如下所示:
public class CoreLogger {
public static Logger getLogger(final Class moduleName) {
Logger logger = Logger.getLogger(moduleName);
Properties prop = new Properties();
try {
prop.load(new FileReader("log4j.properties"));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
prop.put("log4j.appender.DB.user", "root");
prop.put("log4j.appender.DB.password", "root");
PropertyConfigurator.configure(prop);
return logger;
}
}
并使用
static Logger log = CoreLogger.getLogger(Demo.class);
在您的 类 中获取记录器实例,这样您就可以在 运行 时设置凭据。
关于捕获文件中的错误,您可以将 stdout
和 stderr
重定向到您的日志文件,请参阅 Dario's
在 log4j redirect stdout to DailyRollingFileAppender 的回答以了解更多详细信息。