Java 控制台上的Log4j输出,而不是配置的文件

Java 控制台上的Log4j输出,而不是配置的文件,java,file,configuration,console,log4j,Java,File,Configuration,Console,Log4j,我将Log4j配置为登录到一个文件中,但它实际上是登录到stdout。 它创建日志文件,但不写入日志文件,而是写入标准输出 这是我的配置文件: log4j.rootCategory=INFO, file, mail log4j.appender.file=org.apache.log4j.RollingFileAppender log4j.appender.file.File=/path-to/jobs-batch.log log4j.appender.file.MaxFileSize=10MB

我将Log4j配置为登录到一个文件中,但它实际上是登录到stdout。 它创建日志文件,但不写入日志文件,而是写入标准输出

这是我的配置文件:

log4j.rootCategory=INFO, file, mail
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=/path-to/jobs-batch.log
log4j.appender.file.MaxFileSize=10MB
log4j.appender.file.MaxBackupIndex=2
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=[jobs-batch] %p [%t] %c{1}.%M(%L) | %m%n

log4j.logger.org.springframework.jdbc=WARN

# Configuration for receiving e-mails when ERROR messages occur.
log4j.appender.mail=org.apache.log4j.net.SMTPAppender
log4j.appender.mail.To=xxx@xxx.com
log4j.appender.mail.From=xxx@xxx.com
log4j.appender.mail.SMTPHost=mail.xxx.de
log4j.appender.mail.Threshold=ERROR
log4j.appender.mail.Subject=Jobs Batch Error
log4j.appender.mail.layout=org.apache.log4j.PatternLayout
log4j.appender.mail.layout.ConversionPattern=%d  %-5p %c %x - %m%n
有什么想法吗


感谢您调整以满足您的需要:

log4j.rootCategory=DEBUG, C     
log4j.appender.C=org.apache.log4j.ConsoleAppender
log4j.appender.C.layout=org.apache.log4j.PatternLayout
log4j.appender.C.layout.ConversionPattern=%d{MMddyyyy HH:mm} %-5p %c{1}:%L - %m%n
log4j.appender.C.Target=System.out
检查事项:

  • Log4j属性文件的名称是什么?默认值是log4j.properties,这是log4j库在启动时将查找的内容
  • 与Thorbjorn在评论中提出的问题相关,log4j属性文件位于何处?将其放入默认包将确保找到它(默认情况下,Log4j搜索类路径)
  • 启动JVM时,可以选择使用
    log4j.configuration
    属性指定log4j属性文件的位置
    • 我一个人很笨。 我正在使用
      -Dlog4j.configuration
      设置我的文件。 但我也以编程方式配置log4j以使用相同的配置文件


      我仍然不明白为什么它会这样,因为我只是设置了两次相同的配置文件。但有一次,我只做了一次,它按预期工作。

      您确定这是log4j读取的配置文件吗?您有权限写入吗?启动时,我使用道具进行操作。我确信我的文件是有用的我想你误解了这个问题。我不想要控制台输出。