package parallel;
public class ClassA {
private final Logger log = LogManager.getLogger(ClassA.class);
@Test
public void testLogs() {
log.info("info");
log.debug("debug");
log.warn("warn");
log.error("error");
log.fatal("fatal");
log.trace("trace");
}
}
<Configuration status="INFO">
<Properties>
<Property name="basePath" value="./logs" />
</Properties>
<Appenders>
<Console name="console" target="SYSTEM_OUT">
<PatternLayout>
<Pattern>
[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n
</Pattern>
</PatternLayout>
</Console>
<File name="fileLogger" fileName="${basePath}/error.log">
<PatternLayout>
<Pattern>
[%-5level] %d{yyyy-MM-dd HH:mm:ss} [%t] %c{1} - %msg%n
</Pattern>
</PatternLayout>
</File>
</Appenders>
<Loggers>
<Root name="parallel">
<AppenderRef ref="console" level="trace" />
</Root>
<Logger name="parallel" level="warn" additivity="false">
<AppenderRef ref="fileLogger" />
</Logger>
</Loggers>
按照我的理解,你的目标是完成以下几项:
我打算将错误和致命写入文件,因此使用level=ERROR。我打算将所有日志写入控制台,因此对控制台使用level=trace。
请先阅读整个答案,然后再对您将在代码中实现的内容做出最终选择。
<Loggers>
<Root>
<AppenderRef ref="console"/>
</Root>
<Logger name="parallel" level="ALL" additivity="true">
<AppenderRef ref="fileLogger" level="ERROR"/>
</Logger>
</Loggers>
一旦标识了记录器,log4j必须确定该事件是否被该记录器接收。这基于记录器的级别设置。由于“并行”记录器被设置为all
级别,它将接受任何级别的事件。
记录器接受事件后,其附加器也必须接受该事件。与“并行”记录器的文件附加器关联的级别是error
,因此该附加器将只接受error
和fatal
级别的事件。
由于“并行”记录器的可加性为true
,因此每当它接受一个事件时,它也会将该事件传递给其父记录器的附加器(除非其中一个记录器通过指定可加性false
来破坏链-详情请参见log4j2体系结构页面)。因此“parallel”接受的任何事件都将转到与根记录器相关联的控制台附加器。
下面是一些示例代码来说明这个问题:
package parallel;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class ClassA {
private static final Logger log = LogManager.getLogger(ClassA.class);
public static void main(String[] args) {
log.info("info");
log.debug("debug");
log.warn("warn");
log.error("error");
log.fatal("fatal");
log.trace("trace");
// See the mistake here?
// The wrong logger name was used in the code,
// now the error event goes to the root logger!
final Logger log2 = LogManager.getLogger("foo");
log2.error("Woops an error!");
}
}
以上使用答案开头的配置的控制台输出为:
[INFO ] 2019-05-05 12:48:31.410 [main] ClassA - info
[DEBUG] 2019-05-05 12:48:31.411 [main] ClassA - debug
[WARN ] 2019-05-05 12:48:31.411 [main] ClassA - warn
[ERROR] 2019-05-05 12:48:31.411 [main] ClassA - error
[FATAL] 2019-05-05 12:48:31.412 [main] ClassA - fatal
[TRACE] 2019-05-05 12:48:31.412 [main] ClassA - trace
[ERROR] 2019-05-05 12:48:31.413 [main] foo - Woops an error!
错误日志文件仅显示:
[ERROR] 2019-05-05 12:48:31 [main] ClassA - error
[FATAL] 2019-05-05 12:48:31 [main] ClassA - fatal
<Loggers>
<Root level="ALL">
<AppenderRef ref="console"/>
<AppenderRef ref="fileLogger" level="ERROR"/>
</Root>
</Loggers>
[INFO ] 2019-05-05 12:59:32.419 [main] ClassA - info
[DEBUG] 2019-05-05 12:59:32.421 [main] ClassA - debug
[WARN ] 2019-05-05 12:59:32.421 [main] ClassA - warn
[ERROR] 2019-05-05 12:59:32.421 [main] ClassA - error
[FATAL] 2019-05-05 12:59:32.421 [main] ClassA - fatal
[TRACE] 2019-05-05 12:59:32.421 [main] ClassA - trace
[ERROR] 2019-05-05 12:59:32.422 [main] foo - Woops an error!
[ERROR] 2019-05-05 12:59:32 [main] ClassA - error
[FATAL] 2019-05-05 12:59:32 [main] ClassA - fatal
[ERROR] 2019-05-05 12:59:32 [main] foo - Woops an error!
其他可能有用的链接:
https://stackoverflow.com/A/51567436/3284624
希望这对你有帮助!
嘿,我想知道控制台中的输出是否可能与文件输出中的输出相同。 这是我的XML配置。 滚动文件中的输出 在控制台中为空。但是现在如果我改变 到"追踪" 将是2,4,6。。。。在控制台和我的文件中,它将是1,3,5,7。。。这很容易理解。 但是我的问题是,我们如何在控制台和文件中同时拥有相同的日志级(跟踪)输出?(添加包名称和级别的标签不起作用) 与此问题相关: log4j2 xml配置-登录到文件和控
问题内容: 有没有一种方法可以在Eclipse控制台中为部分日志着色。我知道我可以发送到错误流和标准流并以不同的方式给它们上色,但是我更希望在ANSI转义码(或其他HTML格式)行中查找,可以在其中将颜色嵌入字符串中以对其进行着色日志。 它肯定会有助于使重要的部分脱颖而出,而无需诉诸怪异的布局,而是将布局保持在log4j设置中 这是我正在寻找的示例: [INFO]网格已完成....... 否 如果
问题内容: 我想在量角器测试中输出div的文本,到目前为止,我有: 但这输出 我尝试了“ toString()”,结果相同。 有没有办法将文本输出到控制台? 问题答案: 和其他大多数量角器方法都返回承诺。您想将您的陈述放入承诺解决方案中: 使用新的量角器语法:
Laravel中是否有类似的东西允许您查看正在执行的实际SQL?例如,在Rails中,您可以在控制台中看到SQL。在Django中,您有一个工具栏。 在《拉威尔4》中有类似的东西吗? 澄清一下:我的问题是如何在没有代码的情况下做到这一点。Laravel中是否有内置的东西不需要我在应用程序中编写代码? 更新:最好我也希望看到CLI查询(例如)
我曾试图使用log4j2在一个Spring Boot应用程序中进行日志记录,它工作正常,但问题是,并非所有日志记录都按照log4j2中的配置进入日志文件。xml很少有日志被引导到控制台,后面是我的pom片段,后面是log4j2。xml和控制台的输出,以及日志文件的输出 波姆。xml log4j2。xml 控制台输出 日志文件输出
问题内容: 我想建立一个自动化测试,所以我必须知道chrome控制台中出现的错误。 是否有一个选项来获取出现在控制台中的错误行? 为了查看控制台:右键单击页面中的某处,单击“检查元素”,然后转到“控制台”。 问题答案: 我不知道C#,但这是可以完成此工作的Java代码,希望您可以将其转换为C# 注意上面代码中的setUp方法。我们使用LoggingPreferences对象来启用日志记录。日志有几