Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.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 log4j到postgresql的日志记录不工作_Java_Postgresql_Log4j - Fatal编程技术网

Java log4j到postgresql的日志记录不工作

Java log4j到postgresql的日志记录不工作,java,postgresql,log4j,Java,Postgresql,Log4j,这是数据库模式 create table log4j_messages ( message varchar(2000), class varchar(255), priority varchar(64), log_date timestamp ); 下面是我的log4j属性 log4j.appender.jdbc=org.apache.log4j.jdbc.JDBCAppender log4j.appender.jdbc.driver=org.postgr

这是数据库模式

create table log4j_messages 
( 
  message  varchar(2000), 
  class    varchar(255), 
  priority varchar(64), 
  log_date timestamp 
);
下面是我的log4j属性

log4j.appender.jdbc=org.apache.log4j.jdbc.JDBCAppender 
log4j.appender.jdbc.driver=org.postgresql.Driver
log4j.appender.jdbc.URL=jdbc:postgresql://MYSERVER:5432/logs 
log4j.appender.jdbc.user=logs
log4j.appender.jdbc.password=MYPASS
log4j.appender.jdbc.sql=INSERT INTO log4j_messages (message, class, priority, log_date) values ('%m', '%c', '%p', to_timestamp('%d', 'YYYY-MM-DD HH24:MI:SS,MS'))
没有数据被记录到数据库中。我能找出问题出在哪里吗

编辑:

我尝试在属性文件的顶部添加log4j.rootCategory=DEBUG,现在我得到以下警告

log4j:WARN找不到记录器(myprogram.Main)的追加器。 log4j:警告请正确初始化log4j系统。 log4j:有关更多信息,请参阅警告

下面是我的log4j属性文件在写入文件时的工作版本

log4j.rootCategory=DEBUG, R, O

# Stdout
log4j.appender.O=org.apache.log4j.ConsoleAppender

# File
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=log4j.log

# Control the maximum log file size
log4j.appender.R.MaxFileSize=500KB

# Archive log files (one backup file here)
log4j.appender.R.MaxBackupIndex=1

log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.O.layout=org.apache.log4j.PatternLayout

log4j.appender.R.layout.ConversionPattern=[%d{ISO8601}]%5p%6.6r[%t]%x - %C.%M(%F:%L) - %m%n
log4j.appender.O.layout.ConversionPattern=[%d{ISO8601}]%5p%6.6r[%t]%x - %C.%M(%F:%L) - %m%n

您应该将rootCategory设置为:

log4j.rootCategory=DEBUG, jbdc

log4j.appender.jdbc=org.apache.log4j.jdbc.JDBCAppender 
log4j.appender.jdbc.driver=org.postgresql.Driver
log4j.appender.jdbc.URL=jdbc:postgresql://MYSERVER:5432/logs 
log4j.appender.jdbc.user=logs
log4j.appender.jdbc.password=MYPASS
log4j.appender.jdbc.sql=INSERT INTO log4j_messages (message, class, priority, log_date) values ('%m', '%c', '%p', to_timestamp('%d', 'YYYY-MM-DD HH24:MI:SS,MS'))

否则日志记录器将不会有appender。

确保jdbc jar位于path中。您的日志级别是否正确(调试/错误?)?最后,appender不记录异常。Postgresql要求秒和毫秒之间有一个点,而不是逗号。我将它改为一个点,但仍然无法工作。我在Eclipse中也有jarpath,我还尝试将它放在bin文件和项目文件中。这可能是因为我在属性文件的顶部没有log4j.rootCategory吗?当我放置一个时,我得到了jar中包含的
log4j.properties
?似乎它找不到。谢谢你的答案。但是当我运行我的程序时,我从log4j pastebin.com/k4UPgftkIs得到了这些错误和警告。log4j属性文件实际上包含在jar或类路径中?我发现了一个叫做logback的东西,它是一个改进的log4j,文档记录得更好,我想我应该让它工作。你也可以切换到slf4j(这是一个前端为所有类型的伐木者)。以及logback的默认实现。