简体   繁体   English

为什么我使用 log4j2 时我的日志文件是空的?

[英]why is my log file empty when I use log4j2?

please help me debug something-- I am getting an empty log file when I use log4j2.请帮我调试一些东西——当我使用 log4j2 时,我得到一个空的日志文件。

Here is my log4j2.properties file:这是我的 log4j2.properties 文件:

# Root logger option
name=PropertiesConfig
property.filename = logs
appenders = stdout, file

# stdout will print logs on console
appender.stdout.name = consoleLogger
appender.stdout.type = Console
appender.stdout.target = System.out
appender.stdout.layout.type = PatternLayout
appender.stdout.layout.pattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n


# file will print logs in file
appender.file.name = fileLogger
appender.file.type = File
appender.file.fileName=ProtScannerLog.log
appender.file.layout.type = PatternLayout
appender.file.layout.pattern = %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

loggers=file
logger.file.name = log4j2.properties
logger.file.level = info
logger.file.appenderRefs = file
logger.file.appenderRef.file.ref = fileLogger

rootLogger.level = info
rootLogger.appenderRefs = stdout, file
rootLogger.appenderRef.stdout.ref = consoleLogger
rootLogger.appenderRef.file.ref = fileLogger

# added for debugging
# logs the SQL statements
log4j.logger.org.hibernate.SQL=DEBUG
# Logs the JDBC parameters passed to a query
log4j.logger.org.hibernate.type=TRACE
log4j.appender.hb=org.apache.log4j.ConsoleAppender 
log4j.appender.hb.layout=org.apache.log4j.PatternLayout

And my log4j2.xml:还有我的 log4j2.xml:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
  <Appenders>
    <File name="File" fileName="ProtScannerLog.log" append="true"> 
        <PatternLayout pattern="%d %t %-5p %c{2} - %m%n"/> 
    </File> 
    <Console name="Console" target="SYSTEM_OUT">
      <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
    </Console>
  </Appenders>
  <Loggers>
    <Root level="debug">
        <AppenderRef ref="Console" level="info" />
        <AppenderRef ref="File" level="error" />
    </Root>
  </Loggers>
</Configuration>

When I run I get the log file in the directory I am running my code from, but it is blank.当我运行时,我在运行代码的目录中获取日志文件,但它是空白的。 I see the correct messages in the console.我在控制台中看到了正确的消息。 I also would like to have this log file placed in C:\Users\username, but I am having trouble specifying that location.我也想将此日志文件放在 C:\Users\username 中,但我无法指定该位置。 Any help would be much appreciated.任何帮助将非常感激。 Thanks in advance.提前致谢。

It supposed to be comment, but I don't have a reputation so have to post it this way:)它应该是评论,但我没有声誉,所以必须以这种方式发布:)

I've just copy pasted your config and it generated the ProtScannerLog.log file with several lines in. So it definitely not log4j2.properties config issue.我刚刚复制粘贴了您的配置,它生成了包含几行的 ProtScannerLog.log 文件。所以它绝对不是 log4j2.properties 配置问题。

Regarding the location of the file I can suggest to replace:关于文件的位置,我可以建议替换:

property.filename = logs

by经过

property.filename = C:\\Users\\username

And then refer to the property in "appender.file.fileName" definition:然后参考“appender.file.fileName”定义中的属性:

appender.file.fileName=${filename}\\ProtScannerLog.log

It would create the file under any folder you specify.它会在您指定的任何文件夹下创建文件。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM