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

log4j2-在控制台中复制日志

慕容星晖
2023-03-14

嘿,我想知道控制台中的输出是否可能与文件输出中的输出相同。

这是我的XML配置。

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN" name="log4j2 Logs">
    <Properties>
        <Property name="basePath">./logs</Property>
    </Properties>   

  <Appenders>     
    <RollingFile name="file" fileName="${basePath}/ActivateMaintenancePage.logs" 
                             filePattern="${basePath}/ActivateMaintenancePage-%d{yyyy-MM-dd}">
      <PatternLayout header="LOGGING START%n%n" footer="%n%nLOGGING END"
                     pattern="%3sn %30d{DEFAULT}    [%M] %-7level %c{30} - %m%n" />

      <Policies>      
        <OnStartupTriggeringPolicy minSize="0"/>
        <TimeBasedTriggeringPolicy />
        <SizeBasedTriggeringPolicy size="500 MB"/>
      </Policies>
    </RollingFile>


    <Console name="console" target="SYSTEM_OUT">
      <PatternLayout header="LOGGING START%n%n" footer="%n%nLOGGING END"
                     pattern="%3sn %30d{DEFAULT}    [%M] %-7level %c{30} - %m%n" />
    </Console>     
  </Appenders>    


  <Loggers>             
    <Root level="trace">        
        <AppenderRef ref="console" level="error"/>  
        <AppenderRef ref="file" level="trace"/>         
    </Root>
  </Loggers> 
</Configuration>

滚动文件中的输出

  1        2017-07-25 11:16:36,762    [initializeChrome] INFO    class testNG.SimSettings - Web Chrome driver is now initilized.
  2        2017-07-25 11:16:36,762    [lambda$0] INFO    class testNG.SimSettings - Opening... http://msrvaq11vm.technomedia.ca/sigal_60/2017sp1/sp_polymont/_sim/PROD Sp2 2016 Sim...
  3        2017-07-25 11:16:47,926    [initilizeAllElements] INFO    class testNG.SimSettings - All @FindBy elements have been initilized.
  4        2017-07-25 11:16:48,006    [change1stLevelFrame] INFO    class testNG.SimSettings - Changing target to 1st level frame.
  5        2017-07-25 11:16:49,719    [enterCredentials] INFO    class testNG.SimSettings - UserName & Password: Success!

在控制台中为空。但是现在如果我改变

<AppenderRef ref="console" level="error"/>  

到"追踪"

将是2,4,6。。。。在控制台和我的文件中,它将是1,3,5,7。。。这很容易理解。

但是我的问题是,我们如何在控制台和文件中同时拥有相同的日志级(跟踪)输出?(添加包名称和级别的标签不起作用)

与此问题相关: log4j2 xml配置-登录到文件和控制台(具有不同级别)

共有1个答案

王才英
2023-03-14

我不确定我是否正确阅读了您的问题,但似乎您希望在日志输出中呈现一些唯一值,这样同一个日志事件在控制台日志和文件日志输出中具有相同的唯一值。

序列号模式转换器将在每次呈现日志事件时递增。对于每个Appender,相同的日志事件是单独呈现的,因此不同的Appender永远不会有相同的序列号。

有很多选择。一个想法是在模式布局中包含%nanonanotime。此值在应用程序进行日志记录调用时捕获,并且对于所有附加程序都相同。另一种方法是创建自定义Log4j2模式转换器或查找。

 类似资料:
  • 问题内容: 有没有一种方法可以在Eclipse控制台中为部分日志着色。我知道我可以发送到错误流和标准流并以不同的方式给它们上色,但是我更希望在ANSI转义码(或其他HTML格式)行中查找,可以在其中将颜色嵌入字符串中以对其进行着色日志。 它肯定会有助于使重要的部分脱颖而出,而无需诉诸怪异的布局,而是将布局保持在log4j设置中 这是我正在寻找的示例: [INFO]网格已完成....... 否 如果

  • 控制台日志是一个强大的方法,用来检查您的页面或应用程序。让我们从console.log()开始,探索其他高级用法。 TL;DR 使用console.log()进行基本日志记录 使用console.erroe()和console.warn()获取醒目的内容 使用console.group()和console.groupEnd()来分组相关消息,避免混乱 使用console.assert()显示条件语

  • 问题内容: 我想在量角器测试中输出div的文本,到目前为止,我有: 但这输出 我尝试了“ toString()”,结果相同。 有没有办法将文本输出到控制台? 问题答案: 和其他大多数量角器方法都返回承诺。您想将您的陈述放入承诺解决方案中: 使用新的量角器语法:

  • Laravel中是否有类似的东西允许您查看正在执行的实际SQL?例如,在Rails中,您可以在控制台中看到SQL。在Django中,您有一个工具栏。 在《拉威尔4》中有类似的东西吗? 澄清一下:我的问题是如何在没有代码的情况下做到这一点。Laravel中是否有内置的东西不需要我在应用程序中编写代码? 更新:最好我也希望看到CLI查询(例如)

  • 我最近不得不迁移我的应用程序,复制并粘贴了一大堆代码。现在,当我构建项目时,我会在控制台中获得通常的firebase输出,但这次它是重复的。有谁知道可能导致这种情况的原因。代码太多,我无法完成