Java项目中的log4j2 - 无法找到输出

问题描述:

我在这里新建,请帮我理解我的新项目的log4j2配置。Java项目中的log4j2 - 无法找到输出

我的问题是:

  • 如何获得所有的日志输出?

  • 从哪里可以搜索日志文件?

还怎么救tomcat的控制台输出在TXT文件?

我非常感谢你的帮助和支持,今天我想从你们那里学到一些新东西!谢谢!

这是log4j2.xml

<?xml version="1.0" encoding="UTF-8"?> 

<configuration status="error" monitorInterval="1800"> 
    <Properties> 
     <Property name="LOG_HOME">\Workspaces\logs\paymentweb</Property> 
     <Property name="LOG_DEBUG">${LOG_HOME}\app\debug.log</Property> 
     <Property name="LOG_INFO">${LOG_HOME}\app\info.log</Property> 
     <Property name="LOG_ERROR">${LOG_HOME}\app\error.log</Property> 
    </Properties> 


    <appenders> 

     <Console name="Console" target="SYSTEM_OUT"> 
     (onMismatch)--> 
      <ThresholdFilter level="trace" onMatch="ACCEPT" onMismatch="DENY"/> 

      <PatternLayout pattern="%d{yyyy.MM.dd HH:mm:ss z} %-5level %class{36}.%M()/%L - %msg%xEx%n"/> 
     </Console> 


     <RollingRandomAccessFile name="app_debug" fileName="${LOG_DEBUG}" append="false" filePattern="${LOG_HOME}\$${date:yyyy-MM}\debug-%d{MM-dd-yyyy}-%i.log.gz"> 
      <Filters> 
       <ThresholdFilter level="debug" onMatch="ACCEPT" onMismatch="NEUTRAL"/> 
      </Filters> 
      <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss z} %-5level %class{36}.%M()/%L - %msg%xEx%n"/> 
      <Policies> 
       <OnStartupTriggeringPolicy /> 
       <SizeBasedTriggeringPolicy size="50 MB" /> 
       <TimeBasedTriggeringPolicy /> 
      </Policies> 
     </RollingRandomAccessFile> 


     <CustomRollingRandomAccessFile name="app_info" fileName="${LOG_INFO}" append="false" filePattern="${LOG_HOME}\$${date:yyyy-MM}\info-%d{MM-dd-yyyy}-%i.log.gz"> 
      <Filters> 
       <ThresholdFilter level="warn" onMatch="DENY" onMismatch="NEUTRAL"/> 
       <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/> 
      </Filters> 
      <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss z} %-5level %class{36}.%M()/%L - %msg%xEx%n"/> 
      <Policies> 
       <OnStartupTriggeringPolicy /> 
       <SizeBasedTriggeringPolicy size="50 MB" /> 
       <TimeBasedTriggeringPolicy /> 
      </Policies> 
     </CustomRollingRandomAccessFile> 


     <CustomRollingRandomAccessFile name="app_error" fileName="${LOG_ERROR}" append="false" filePattern="${LOG_HOME}\$${date:yyyy-MM}\error-%d{MM-dd-yyyy}-%i.log.gz"> 
      <Filters> 
       <ThresholdFilter level="warn" onMatch="ACCEPT" onMismatch="DENY"/> 
      </Filters> 
      <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss z} %-5level %class{36}.%M()/%L - %msg%xEx%n"/> 
      <Policies> 
       <OnStartupTriggeringPolicy /> 
       <SizeBasedTriggeringPolicy size="50 MB" /> 
       <TimeBasedTriggeringPolicy /> 
      </Policies> 
     </CustomRollingRandomAccessFile> 
    </appenders> 


    <loggers> 

     <root level="trace" additivity="false"> 
      <appender-ref ref="Console"/> 
      <appender-ref ref="app_debug"/> 
      <appender-ref ref="app_info"/> 
      <appender-ref ref="app_error"/> 
     </root> 
    </loggers> 
</configuration> 
+0

我有我的项目log4j2配置,我不知道这是否可以用你的方式做,但我猜你需要定义与记录仪节一个appender然后定义不同的组件。例如:''。你尝试过吗? –

+0

顺便说一句,你是根据记录器级别拆分文件,这通常是使用不同的log4j配置文件启动你的服务(并在应用程序上打印不同记录器级别的消息) –

所有的日志在\工作区\日志\ paymentweb \应用程序* .LOG

+0

我正在运行我的项目并发布一些日志文件的数据,但是当我检查这个位置时它是空的 – Abdulin

您可以了解您的appender是如何通过实现内部配置细节Log4j2“状态”日志。

在配置文件的顶部,将其更改为TRACE <configuration status="trace" monitorInterval="1800">。我相信这将显示控制台上文件appender的完整路径。 (对于定制appender CustomRollingRandomAccessFile没有保证。)

此外,您在<Console> appender配置中有一个不符合XML的片段。这看起来不错,应予删除:

(onMismatch)-->