当前位置: 首页 > 知识库问答 >
问题:

是否使用log4j2记录不同的数据?

淳于博
2023-03-14

我目前正在开发一个应用程序,它将为不同的目的生成两个不同的日志文件。因为我是log4j2新手,所以无法实现它。这是我的配置文件(log4j2.xml):

<?xml version="1.0" encoding="UTF-8"?>
  <Configuration status="WARN">
    <Properties>
      <Property name="log-path">C:/Users/460681/Desktop/SourceFiles</Property>
    </Properties>
    <Appenders>
      <Console name="console-log" target="SYSTEM_OUT"> 
        <PatternLayout 
          pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n" />
      </Console> 
      <RollingFile name="info-log" fileName="${log-path}/SplunkOADC.log"
         filePattern="${log-path}/SplunkOADC-%d{yyyy-MM-dd}.log">
         <PatternLayout>
           <pattern> %d{yyyy-MM-dd HH:mm:ss.SSS} - %msg%n
           </pattern>
         </PatternLayout>
         <Policies>
           <TimeBasedTriggeringPolicy interval="1"
             modulate="true" />
         </Policies>
         <Filters>
           <ThresholdFilter level="error" onMatch="DENY"   onMismatch="NEUTRAL"/>
           <ThresholdFilter level="trace" onMatch="DENY"   onMismatch="NEUTRAL"/>
           <ThresholdFilter level="info" onMatch="ACCEPT"   onMismatch="DENY"/>
         </Filters>
       </RollingFile>
       <RollingFile name="error-log" fileName="${log-path}/SplunkOADC-error.log"
            filePattern="${log-path}/SplunkOADC-error-%d{yyyy-MM-dd}.log">
         <PatternLayout>
           <pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n
           </pattern>
         </PatternLayout>
         <Policies>
           <TimeBasedTriggeringPolicy interval="1"
              modulate="true" />
         </Policies>
         <Filters>
           <ThresholdFilter level="error" onMatch="ACCEPT"   onMismatch="DENY"/>
           <ThresholdFilter level="trace" onMatch="DENY"   onMismatch="NEUTRAL"/>
           <ThresholdFilter level="info" onMatch="DENY"   onMismatch="NEUTRAL"/>
         </Filters>
       </RollingFile>
       <RollingFile name="trace-log" fileName="${log-path}/SplunkOADC-trace.log"
          filePattern="${log-path}/SplunkOADC-trace-%d{yyyy-MM-dd}.log">
          <PatternLayout>
            <pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n
            </pattern>
          </PatternLayout>
          <Policies>
            <TimeBasedTriggeringPolicy interval="1"
              modulate="true" />
          </Policies>
          <Filters>
            <ThresholdFilter level="error" onMatch="DENY"   onMismatch="NEUTRAL"/>
            <ThresholdFilter level="trace" onMatch="ACCEPT"   onMismatch="DENY"/>
            <ThresholdFilter level="info" onMatch="DENY"   onMismatch="NEUTRAL"/>
          </Filters>
        </RollingFile>
     </Appenders>
     <Loggers>
       <Root level="debug">
         <AppenderRef ref="info-log" level="info"/>
         <AppenderRef ref="trace-log" level="trace"/>
       </Root>
     </Loggers>
  </Configuration>

我不确定我是否用了正确的方法。下面是我的java方法,它试图使用log4j2进行日志记录

logger.entry("Enter The app");
String report_index_data =
      "select REPORT_MODE, INDEX_ID from TABLE_NAME";
ResultSet rs = db.selectQuery(report_index_data, conn);
while(rs.next()){
 logger.info("report_index_data =" +rs.getString("report_index_data"));
}
logger.exit();

谢谢

共有2个答案

顾斌
2023-03-14

首先,请注意,如果根日志记录器级别为debug,则它不会将跟踪级别日志事件发送到任何附加程序;它只将调试级别或更高级别的日志事件记录到其附加程序。

其次,您的代码使用记录器。entry()记录器。退出()。要使这些方法有用,您需要在模式中使用具有位置模式(如%location或%method)的模式布局。(例如,[%-5level]%d{yyyy-MM-dd HH:MM:ss.SSS}[%t]%c{1}.%M-%msg%n)。这将显示您输入/退出的方法的名称。请注意,计算位置信息对性能有一定影响。

严峰
2023-03-14

配置中添加新的记录器。

    <root level="debug">
        <appender-ref ref="info-log" level="info"/>
    </root>

    <logger name="logger2">
     <AppenderRef ref="trace-log" level="trace"/>
    </logger>
 类似资料:
  • 在log4j2文档log4j2 java配置中,默认配置为: 根本就不在那里。它仍将只打印出错误日志。 问题 是否有其他人遇到此问题? 有人能复制它吗? 有人知道怎么修吗?我几乎要给别人一块钱。不过,我肯定会把他们的答案标成绿色。 我的最终目标是让特定的记录器发送SMTP请求。我很确定我知道怎么做,我只是在和这个小问题作斗争

  • 问题内容: 我正在尝试使用 Log4j2 将spring日志打印到文件和控制台中。我猜这是我的Log4j2配置中的问题。我无法使其正常运行。我的log4j2.xml文件中有以下配置: 这些是我在pom文件中具有的依赖项:(可能其中一些不是必需的) 我没有在Java代码中做任何与spring相关的事情。我正在使用Apache Camel的Main类,该类读取我的spring配置并加载bean。 我究

  • 使用log4j,我可以将日志记录到调用此方法的不同文件: “解答”哦是的,我少了一个记录器: 我可以这样选择logger:

  • 我试图从log4j1更改为log4j2。我所做的: 已删除旧配置文件log4j。xml 创建了新的配置文件log4j2。xml 创建了jboss部署结构。xml 编辑的pom 环境:野蝇10 1 EAR 4 WAR文件中没有使用web.xml。以前的log4j配置日志在EAR中(仅) Log4j2配置文件 Jboss部署结构 新的maven依赖关系 我之前说过我在SLF4j中使用log4j1。这些

  • 问题内容: 尽管在某些教程中,例如此处( 参数化日志记录 部分),他说Logback消息参数化可以帮助我们避免 在日志数据中进行不必要的计算 (如果日志记录级别不是DEBUG): 我测试(的logback上的版本),这个优化仅适用于不必要的参数对象的- 因为这作品的 log4j的 。 Logback 文档未涵盖此详细信息。 因此,我们必须对所有“昂贵”的日志记录使用isDebugEnabled()